由 SQL 编写导致的慢

简介: 针对SQL编写导致的慢 SQL,优化起来还是相对比较方便的。正确的使用索引能加快查询速度,那么我们在编写 SQL 时就需要注意与索引相关的规则: 字段类型转换导致不用索引,如字符串类型的不用引号,数字类型的用引号等,这有可能会用不到索引导致全表扫描; mysql 不支持函数转换,所以字段前面不能加.

针对SQL编写导致的慢 SQL,优化起来还是相对比较方便的。正确的使用索引能加快查询速度,那么我们在编写 SQL 时就需要注意与索引相关的规则:

字段类型转换导致不用索引,如字符串类型的不用引号,数字类型的用引号等,这有可能会用不到索引导致全表扫描;

mysql 不支持函数转换,所以字段前面不能加函数,否则这将用不到索引;

不要在字段前面加减运算;

字符串比较长的可以考虑索引一部份减少索引文件大小,提高写入效率;

like % 在前面用不到索引;

根据联合索引的第二个及以后的字段单独查询用不到索引;

不要使用 select *;

排序请尽量使用升序 ;

or 的查询尽量用 union 代替 (Innodb);

复合索引高选择性的字段排在前面;

order by / group by 字段包括在索引当中减少排序,效率会更高。

除了上述索引使用规则外,SQL 编写时还需要特别注意一下几点:

尽量规避大事务的 SQL,大事务的 SQL 会影响数据库的并发性能及主从同步;

分页语句 limit 的问题;

删除表所有记录请用 truncate,不要用 delete;

不让 mysql 干多余的事情,如计算;

输写 SQL 带字段,以防止后面表变更带来的问题,性能也是比较优的 ( 涉及到数据字典解析,请自行查询资料);

在 Innodb上用 select count(*),因为 Innodb 会存储统计信息;

慎用 Oder by rand()。

相关文章
|
SQL 存储 Oracle
使用 NineData 高效编写 SQL
作为与数据库交互如此重要的SQL,如何准确、高效的编写正确的SQL语句得以运行,很大程度上将与研发效率直接挂钩。NineData在SQL窗口中实现了多个功能,帮助大家更便捷的书写SQL与数据库进行交互。
606 0
使用 NineData 高效编写 SQL
|
SQL 数据库
编写SQL为数据库某一字段添加外键约束
编写SQL为数据库某一字段添加外键约束
107 0
编写SQL为数据库某一字段添加外键约束
|
SQL 关系型数据库 MySQL
七种 JOIN 的 SQL 编写|学习笔记
快速学习七种 JOIN 的 SQL 编写
150 0
七种 JOIN 的 SQL 编写|学习笔记
|
SQL 监控 HIVE
网站流量日志分析--统计分析--sql 补充扩展--如何编写 hive sql|学习笔记
快速学习网站流量日志分析--统计分析--sql 补充扩展--如何编写 hive sql
117 0
|
SQL 关系型数据库 MySQL
软件测试mysql面试题:编写SQL SELECT查询,该查询从Employee_Details表返回名字和姓氏。
软件测试mysql面试题:编写SQL SELECT查询,该查询从Employee_Details表返回名字和姓氏。
115 0
|
SQL 关系型数据库 MySQL
软件测试mysql面试题:编写SQL查询以从表中选择所有记录?
软件测试mysql面试题:编写SQL查询以从表中选择所有记录?
101 0
|
SQL Java 关系型数据库
编写Java程序,使用JDBC连接SQL Server数据库
编写Java程序,使用JDBC连接SQL Server数据库
200 0
|
SQL 存储 数据库
阿里开发强制要求的11条SQL编写规范
【强制】不要使用count(列名)或count(常量)来替代count(),count()是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。 说明:count(*)会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行。
3338 0