[关闭]
@MRsunhuimin 2019-11-28T16:00:57.000000Z 字数 918 阅读 215

提高数据库sql语句执行速度方案

https://www.w3school.com.cn/sql/sql_union.asp
MySQL数据库


1. 比较运算符能用“=”就不用“<>”

    "="增加了索引的使用几率

2. 明知只有一条查询结果的情况下,请使用"limit 1"

    "limit 1"可以避免全表扫描,找到对应结果后就不会再继续扫描了

3. 为列选择合适的数据类型

    能用TINGINT就不用SMALLINT SMALLINT INT

4. 将大的DELETE,UPDATE or INSERT 查询变成多个小查询

    将一个几十行、几百行的SQL语句写成多个小查询可以达到更好的性能以及更好的数据控制。

5. 使用UNION ALL代替 UNION ,如果结果集允许重复的话

    因为 UNION ALL 不去重,效率高于UNION 

    默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

    另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

6. 为获得相同结果集的多次执行,请保持SQL语句前后一致

    这样做的目的是为了充分利用查询缓冲,
    比如根据地域和产品id查询产品价格,第一次使用了:
  1. SELECT price FROM order WHERE id = 123456 and regin = 'BEIJING'
    那么第二次同样的查询,请保持以上语句的一致性,比如不要将where语句里面的id和regin位置调换顺序

7. 尽量避免使用“SELECT *”

    如果不查询表中所有列,尽量避免使用SELECT * ,因为他会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及他与应用程序客户端之间的IO开销。

8. WHERE子句里面的列尽量被索引

    只是“尽量”,并不是说所有的列。因地制宜,根据实际情况进行调整,因为索引有时太多也会降低性能。

9. JOIN子句里面的列尽量被索引

    同样只是“尽量”,并不是说所有的列。

10. ORDER BY的列尽量被索引

    ORDER BY的列如果被索引,性能也会更好。

11. 使用LIMIT实现分页逻辑

    不仅提高了性能,同时减少了不必要的数据库和应用间的网络传输。

12. 使用EXPLAIN关键字去查看执行计划

    EXPLAIN可以查看索引使用情况以及扫描的行。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注