首页 > 数据库 >sql 优化一

sql 优化一

时间:2023-01-11 14:55:07浏览次数:34  
标签:优化 查询 索引 sql Null where Order select

尽量少用负向条件查询

  • 例如:!=、not in、not exists 都是不能使用索引的,
//表单Order 一个订单状态值 0为未付款 1为付款 2为待付款
select * from Order where status != 0

//当Order表中的数据量特别大的时候,这个查询的效率会急剧的下降。
//建议:
select * from Order where status in (1,2)

尽量少用前导模糊查询

//前导模糊查询不建议
select * from Order where OrderNo like '%param'
select * from Order where OrderNo like '%param%'
//因为,前导模糊查询是无法命中索引的,所以,会整个数据库去检索,效率相当的差,
而非前导模糊查询则是可以使用索引的。
//建议:
select * from Order where OrderNo like 'param%'

尽量不要在条件字段上面进行运算

select * from Order where Year(CreateTime) = 2018
//然后,每次执行时就会发现,查询的速度异常的慢,导致了大量的请求挂起甚至超时。
这是因为,我们即使在CreateTime上建立了索引,但是,如果使用了运算函数,
查询一样会进行全表的检索。
//建议:
select * from Order where CreateTime > '2018-1-1 00:00:00'

当查询允许Null值的列时,需注意:

  • 创建表的字段时,如果字段需要作为索引,尽量不要为Nll 因为,单列索引不会存Null值,复合索引不存所有索引列都为Null的值,所以如果列允许为Null,可能会得到“不符合预期”的结果集。

标签:优化,查询,索引,sql,Null,where,Order,select
From: https://www.cnblogs.com/lijiaxiang/p/17043777.html

相关文章