ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SQL优化(有时间就更新)

2026/9/12 6:12:17 拓冰建站 浏览量
SQL优化(有时间就更新) 1、给WHERE子句和ORDER BY子句中涉及的列上加索引。2、WHERE子句中尽量避免使用NULL判断否则数据库会放弃使用索引而进行全表扫描。例如下面这条语句就使用了NULL判断它将会进行全表扫描SELECT * FROM person t WHERE t.age IS NULL;应该为age字段设置特殊值而不是使用NULL比如age字段的值未知时可以使用“-1”来代替NULLSELECT * FROM person t WHERE t.age-1;3、不要在WHERE子句中使用“!”和“”运算符如果使用了数据库会放弃索引而使用全表扫描。4、尽量避免在WHERE子句中使用OR运算符例如SELECT * FROM person t WHERE t.age32 OR t.nameadmin;如果age上有索引而name上没有索引数据库会放弃使用索引而进行全表扫描。如果想要使用age列上的索引可以使用下面的语句代替SELECT * FROM person t WHERE t.age32UNION ALLSELECT * FROM person t WHERE t.nameadmin;5、尽量避免在WHERE子句中使用IN或NOT IN语句否则可能导致数据库进行全表扫描。可以使用BETWEEN AND语句或EXISTS语句代替。6、少使用模糊查询模糊查询会导致数据库进行全表扫描例如SELECT * FROM person t WHERE t.name like %dmin%;7、避免在WHERE子句中使用表达式例如SELECT * FROM person t WHERE t.age/510;可以改为SELECT * FROM person t WHERE t.age10*5;8、尽量避免在WHERE子句中使用函数。9、注意一个复合索引如果在WHERE子句中没有使用到该索引的字一个字段则数据库会放弃使用该索引。10、表的索引数量不应太多。比如一些不常出现在WHERE子句中的列可以不加索引。11、应该避免更新聚簇索引列。12、使用varchar代替char节省存储空间。13、如果是MySQL数据库请先将隔离级别设置为“读提交”MySQL数据库的默认隔离级别是“可重复读”。以下是我们工作室开发的软件《榴芒客服系统》的介绍博客里面有软件的下载地址《榴芒客服系统》下载地址-CSDN博客