数据库优化总结

xiaoxiao2021-02-27  435

1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描: 如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num = 03.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or Name = ‘admin’ 可以这样查询:select id from t where num = 10union allselect id from t where Name = ‘admin’

扩展:

union:操作符用于合并两个或多个 SELECT 语句的结果集。 - 请注意,union内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

union all 命令和 union命令几乎是等效的,不过 union 命令会列出所有的值。


5.in 和 not in 也要慎用,否则会导致全表扫描 如:select id from t where num in(1,2,3)对于连续的数值,能用 between 就不要用 in 了:select id from t where num between 1 and 3很多时候用 exists 代替 in 是一个好的选择:select num from a where exists(select 1 from b where num=a.num)6.下面的查询也将导致全表扫描:select id from t where name like ‘
转载请注明原文地址: https://www.6miu.com/read-760.html

最新回复(0)