HTML5技术

sql的那些事(一) - Akon_Coder(4)

字号+ 作者:H5之家 来源:H5之家 2017-01-01 12:00 我要评论( )

结果发现与预期不一样,事实上它只查出了name=bb而没有查找出name=NULL的数据记录 那我们如何查找除了name等于aa的所有数据,只能用ISNULL函数了 SELECT * FROM USERS WHERE ISNULL(NAME,1)’aa’ 但是大家可能不知

结果发现与预期不一样,事实上它只查出了name=bb而没有查找出name=NULL的数据记录
  
那我们如何查找除了name等于aa的所有数据,只能用ISNULL函数了

SELECT * FROM USERS WHERE ISNULL(NAME,1)<>’aa’

但是大家可能不知道ISNULL会引起很严重的性能瓶颈 ,所以很多时候最好是在应用层面限制用户的输入,确保用户输入有效的数据再进行查询。
  
旧表新加字段,需要允许为NULL(避免全表数据更新 ,长期持锁导致阻塞)(这个主要是考虑之前表的改造问题)

3.理解执行计划

所谓的执行计划,就是数据库根据sql语句生成的一个执行顺序。先执行什么,再执行什么。类似于我们的工作计划,先做什么,后做什么,从而使我们的效率达到最高。所以合理的执行计划,会让数据库干正确的事,提高效率。

在我们使用sql查询的时候,通常是根据sql内部的查询计划来进行的,也就是说不同的sql语句生成的查询计划不同,所以要优化sql,我们写出的sql要让数据库能够生成正确执行计划,才能提高性能;反之写出的sql语句,不容易被数据库翻译成合理的执行计划,就容易导致性能瓶颈。
例如:

select id from T_Account select id From T_Account

这两句查询语句我们可以看出只是from关键字大小的区别,但是查询分析器会认为是不同的语句,进行两次解析。所以针对同一个查询语句,在不同的地方我们应该保持一致,大小写一致,查找字段一致。在数据库中针对查询,数据库会缓存查询计划,如果查询的时候,存在已经解析的查询计划,就会按照存在的查询计划走,这样就节省了解析生成查询计划的时间,提高了查询性能。

三.总结

关于查询计划,准备细致的学习一下,明白不同查询计划具体的含义。从而可以进行对应的优化。上面讲到不对的地方,希望大家指出,一起学习,一起进步!


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 救火队员的那些事(2) - CC

    救火队员的那些事(2) - CC

    2016-09-07 17:00

  • 回首一年的骚动岁月 - Akon_Coder

    回首一年的骚动岁月 - Akon_Coder

    2016-09-04 16:00

  • 那些年搞不懂的术语、概念:协变、逆变、不变体 - 农码一生

    那些年搞不懂的术语、概念:协变、逆变、不变体 - 农码一生

    2016-08-30 17:00

  • 开源的那些事儿 (一)- 如何看待开源 - LeftNotEasy

    开源的那些事儿 (一)- 如何看待开源 - LeftNotEasy

    2016-08-24 10:00

网友点评
>