sql语句优化常用的几种方法(mysql语句优化的几种方法)
你们好,最近小活发现有诸多的小伙伴们对于sql语句优化5种方式,sql语句优化这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、 1.用IN操作符写的SQL的优点是写起来简单明了,容易理解,比较适合现代软件开发的风格。然而,带有IN的SQL的性能总是很低。从ORACLE执行的步骤来看,带IN的SQL和不带IN的SQL有以下区别:ORACLE试图将其转换为多个表的连接。如果转换不成功,将首先执行in中的in子查询,然后查询外部表记录。如果转换成功,将直接使用多个表的连接进行查询。可以看出,带IN的SQL至少多了一个转换过程。一般情况下,SQL可以转换成功,但是对于包含分组统计的SQL,不能转换。
2、 推荐方案:尽量不要在业务密集型SQL中使用IN运算符和NOT IN运算符。强烈建议不要使用此操作,因为它不能应用表的索引。推荐方案:用不存在或(外部连接判断为空)方案代替。
3、 2.运算符(不等于)并不意味着该运算符永远不会使用索引,因此对它的处理只会产生全表扫描。建议:使用具有相同功能的其他运算来代替,例如a0到a0或a0 a ' '到a ' '
4、 IS NULL或IS NOT NULL操作(判断一个字段是否为空)一般情况下,判断一个字段是否为空时不会应用索引,因为B树索引不索引空值。建议:用其他功能相同的运算代替,比如把a is not null改为a0或者a ' '不允许字段为空,而是用默认值代替空值。例如,如果业务扩展应用程序中的状态字段不允许为空,则默认值为该应用程序。建立位图索引(分区表无法建立,位图索引难以控制。比如字段值太多会降低索引的性能,多人更新操作会增加数据块锁的现象)。
5、 3.运算符(大于或小于运算符)大于或小于运算符。一般不需要调整,因为会按索引搜索。但在某些情况下可以优化,比如一个有100万条记录的表,30万条记录的a=0,300,000条记录,1,390,000条记录的a=2,10,000条记录=3。那么执行A2的效果和A=3的效果就大不一样了,因为在A2中,ORACLE会找到2的记录索引然后进行比较,而在A=3中,ORACLE会直接找到=3的记录索引。
6、 4.LIKE运算符LIKE运算符可以用于通配符查询,其中的通配符组合可能几乎是任意查询,但如果用不好,就会造成性能问题。例如,like' t00% '不会引用索引,而like' x5400% '会引用范围索引。一个实际的例子:像' T00% '这样的业务号YY_BH,可以用YW_YHJBQK表中业务号后面的账户识别号来查询。这种情况将导致全表扫描。如果改成像' X5400% '这样的YY _ BH或者像' B5400% '这样的YY _ BH,用YY _ BH的索引在两个范围内查询,性能肯定会有很大提升。
以上就是sql语句优化这篇文章的一些介绍,希望能帮助到大家。
扫描二维码推送至手机访问。
版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!
