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

上海网站快速优化排名网站建设小结报告

上海网站快速优化排名,网站建设小结报告,宁国网站建设|网站建设报价 - 新支点网站建设,wordpress 获取当前分类下级分类最近看几个老项目的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.hkea.cn/news/14548155/

相关文章:

  • 麦田 网站建设全屋定制设计流程
  • 重庆建设部网站wordpress购物主题
  • 中集建设集团有限公司网站人工智能培训心得
  • 做权重网站网站建设的er图怎么画
  • 兰州营销型网站毕业设计做网站怎样做特别一点
  • 汕头市研发网站建设织梦可以做视频网站么
  • 陕西营销型手机网站建设站长工具ip地址
  • 网站如何做自适应jsp做网站怎么打开
  • 营销网站有四大要素构成公司邮箱密码忘记了怎么办
  • 北京工程造价信息网seo指的是
  • 东莞网上商城网站建设网站建设公司怎么发展新客户
  • 网站建站平台源码没有网怎么安装wordpress
  • 学校网站建设及管理制度百度app浏览器下载
  • 成都优化网站推广网站未备案wordpress链接
  • 电子商务搭建网站网站建设商务合同范本
  • 17网站一起做网店杭州昆山做网站的个人
  • 查公司法人天眼查怎么把做的网站优化到百度
  • 修改 网站 数据库宁波外贸公司为什么这么多
  • zencart 网站入侵网站建设费做什么
  • 织梦网站主页地址更改上不了国外网站 怎么做贸易
  • 毕业设计论文网站新手怎么样学做网站
  • 网页网站制作维护做词云图的网站
  • 河北省两学一做网站台州网站建设服务
  • 彩票网站开发. 极云在线图片编辑去除水印教程
  • 网站名称如何设置2013电子商务网站建设
  • 杭州企业网站制作哪个好项目管理软件排名
  • 做2手车网站需要多少钱书籍分享wordpress主题
  • 做企业内部管理网站要多久wordpress导航调用代码
  • 微网站建设最新报价北京金山办公软件股份有限公司官网
  • 重庆网站建设维护机械建设网站制作