当前位置: 首页 > news >正文

蚌埠哪里做网站做公司网站的必要性

蚌埠哪里做网站,做公司网站的必要性,得物网上商城,wordpress 360 vr最近看几个老项目的SQL条件中使用了11#xff0c;想想自己也曾经这样写过#xff0c;略有感触#xff0c;特别拿出来说道说道。 编写SQL语句就像炒菜#xff0c;每一种调料的使用都可能会影响菜品的最终味道#xff0c;每一个SQL条件的加入也可能会影响查询的执行效率。那…最近看几个老项目的SQL条件中使用了11想想自己也曾经这样写过略有感触特别拿出来说道说道。 编写SQL语句就像炒菜每一种调料的使用都可能会影响菜品的最终味道每一个SQL条件的加入也可能会影响查询的执行效率。那么 11 存在什么样的问题呢为什么又会使用呢 为什么会使用 11 在动态构建SQL查询时查询条件往往都是动态的最终执行时可能会使用不同的条件。这时候他们就会使用“11”作为一个始终为真的条件让接下来的所有条件都可以方便地用“AND”连接起来就像是搭积木的时候先放一个基座其他的积木块就都可以在这个基座上叠加。 就像下边这样 SELECT * FROM table WHERE 11 if testusername ! nullAND username #{username} /if if testage 0AND age #{age} /if这样就不用在增加每个条件之前先判断是否需要添加“AND”。 11 带来的问题 性能问题 我们先来了解一下数据库查询优化器的工作原理。查询优化器就像是一个聪明的图书管理员它知道如何最快地找到你需要的书籍。当你告诉它所需书籍的特征时它会根据这些信息选择最快的检索路径。比如你要查询作者是“谭浩强”的书籍它就选择先通过作者索引找到书籍索引再通过书籍索引找到对应的书籍而不是费力的把所有的书籍遍历一遍。 但是如果我们告诉它一些无关紧要的信息比如“我要一本书它是一本书”这并不会帮助管理员更快地找到书反而可能会让他觉得困惑。一个带有“11”的查询可能会让数据库去检查每一条记录是否满足这个始终为真的条件这就像是图书管理员不得不检查每一本书来确认它们都是书一样显然是一种浪费。 你可能会说数据库没有这么傻吧 确实这实际上可能不会产生问题因为现代数据库的查询优化器已经非常智能它们通常能够识别出像 11 这样的恒真条件并在执行查询计划时优化掉它们。在许多情况下即使查询中包含了11数据库的性能也不会受到太大影响优化器会在实际执行查询时将其忽略。 但是优化器并不是万能的。在某些复杂的查询场景中即使是简单的 11 也可能对优化器的决策造成不必要的影响比如导致全表扫描。 代码质量 另外从代码质量的角度我们也需要避免在查询中包含 11有以下几点考虑 代码清晰性即使数据库可以优化掉这样的条件但对于阅读SQL代码的人来说11可能会造成困惑。代码的可读性和清晰性非常重要特别是在团队协作的环境中。习惯养成即使在当前的数据库系统中11不会带来性能问题习惯了写不必要的代码可能会在其他情况下引入实际的性能问题。比如更复杂的无用条件可能不会那么容易被优化掉。跨数据库兼容性不同的数据库管理系统DBMS可能有不同的优化器能力。一个系统可能轻松优化掉11而另一个系统则可能不那么高效。编写不依赖于特定优化器行为的SQL语句是一个好习惯。 编写尽可能高效、清晰和准确的SQL语句不仅有助于保持代码的质量也让代码具有更好的可维护性和可扩展性。 替代 11 的更佳做法 现在开发者普遍使用ORM框架来操作数据库了还在完全手写拼SQL的同学可能需要反思下了这里给两个不同ORM框架下替代11的方法。 假设我们有一个用户信息表 user并希望根据传入的参数动态地过滤用户。 首先是Mybatis !-- MyBatis映射文件片段 -- select idselectUsersByConditions parameterTypemap resultTypecom.example.UserSELECT * FROM userwhere!-- 使用if标签动态添加条件 --if testusername ! null and username ! AND username #{username}/ifif testage 0AND age #{age}/if!-- 更多条件... --/where /select在 MyBatis 中避免使用 11 的典型方法是利用动态SQL标签如 if来构建条件查询。where 标签会自动处理首条条件前的 AND 或 OR。当没有满足条件的 if 或其他条件标签时where 标签内部的所有内容都会被忽略从而不会生成多余的 AND 或 WHERE 子句。 再看看 Entity Framework 的方法 var query context.User.AsQueryable(); if (!string.IsNullOrEmpty(username)) {query query.Where(b b.UserName.Contains(username)); } if (age0) {query query.Where(b b.Age age); } var users query.ToList();这是一种函数式编程的写法最终生成SQL时框架会决定是否在条件前增加AND而不需要人为的增加 11。 总结 “11”在SQL语句中可能看起来无害但实际上它是一种不良的编程习惯可能会导致性能下降。就像在做饭时不会无缘无故地多加调料一样我们在编写SQL语句时也应该避免添加无意义的条件。 每一行代码都应该有它存在的理由不要让人和数据库浪费时间在不必要的事情上。
http://www.w-s-a.com/news/608109/

相关文章:

  • 望都网站建设抖音广告投放收费标准
  • 网站制作软件排行榜上海市网站建设公司58
  • 什么是网站风格中国工商网企业查询官网
  • 专业建设专题网站wordpress lnmp wamp
  • 环保网站 下载页网站
  • 开源小程序模板江门关键词优化排名
  • 网站开发 知乎房地产型网站建设
  • 买完域名网站怎么设计wordpress 纯代码
  • 公司网站怎么做百度竞价宁波网络公司哪家好
  • 河西网站建设制作微信分销系统多层
  • 网站制作完成后应进入什么阶段石家庄网站建设找哪家好
  • 南通外贸网站推广自在源码网官网
  • 个人网站模板html下载餐饮vi设计案例欣赏
  • 高端网站建设wanghess网站开发售后服务承诺
  • 江西网站建设费用企业网站推广的方法有( )
  • 中国十大网站开发公司企业网站建设的要素有哪些
  • 网站防站做网站吉林
  • 嘉定区网站建设公司企业信息公示查询系统官网
  • 一个具体网站的seo优化产品介绍网站模板下载地址
  • 怎么做网站在网上能搜到你哈尔滨网站建立公司
  • 做家旅游的视频网站上海百度公司总部
  • 微信小程序公司网站怎么制作区块链平台定制开发
  • 网站资质优化ip地址域名解析
  • 如何搭建个人网站ps做网站首页怎么运用起来
  • 中小企业商务网站建设wordpress 安全加固
  • asp网站开发设计文档php建设网站怎么用
  • 服装公司网站建设需求分析报告seo搜索引擎优化实战
  • wordpress 扒站最近最新新闻
  • 手机wap网站开发与设计wordpress域名无法访问
  • 百度收录网站收费吗做网站用vs还是dw