当前位置:Gxlcms > 数据库问题 > 总结几点sql 性能优化

总结几点sql 性能优化

时间:2021-07-01 10:21:17 帮助过:24人阅读

二.查询语句注意事项

 百万级数据库查询优化的出发点主要基于尽量避免全表扫描;

    1.众所周知的像在WHERE ORDER 语句上的字段添加索引;(索引使用上的考虑和权衡,后续还会有总结的博文)

    2.查询列用列名代替*,COUNT(1)取代COUNT(*);

    3.尽量避免WHERE 子句上和NULL的逻辑判断,如:WHERE NAME IS NULL;

    4.尽量避免WHERE 子句上使用表达式,如:select goods fromwarehouse where num/2=500 改为 select goods from warehouse where num=500/2;

    5.尽量避免WHERE 子句上使用内置函数或标量函数;

    6.尽量避免WHERE子句上<>和!=的出现;

    7.尽量避免WHERE子句上OR 连接非索引列;

    8.尽量避免like的使用;

    9.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算;

    10.对于多张大数据量的表JOIN,要先分页再JOIN,否则逻辑读会很高,性能很差。

    11.用 EXISTS代替 IN 是一个好的选择,如:select [score] from score where name in (select [name] from student)改成 select [score] from score where exists(select 1 from student );

    12.查询语句通过拼接的Where子句带有参数的也会导致全表扫描。

     因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。

     解决的方法是可以改为强制查询使用索引:select [address] from student where name=@name 改为 select [address] from student with(index(‘indexname‘))where name=@name;

    13.索引并不是越多越好,一张表上最多不超过6个,后续我会针对索引的使用进行详细的总结;

    14.能用数值的字段尽量不用字符;

以上内容为本人近期项目中总结以及参考网上贤人志士的文章进行梳理总结,以便增强个人在sql使用上的技巧性;

不足之处还请纠正补充!

引用连接:http://database.51cto.com/art/201407/445934.htm

总结几点sql 性能优化

标签:避免   class   like   文章   参考   审计   内置函数   分页   参数   

人气教程排行