未分类

【www.2979.com】php 管理上百万条的数据库如何抓实管理查询速度_php手艺_脚本之家

16 1月 , 2020  

1.对查询进行优化,应尽量防止全表扫描,首先应构思在 where 及 order by
涉及的列上创建目录。 2.应尽量幸免在 where 子句中对字段实行 null
值判定,不然将招致内燃机遗弃行使索引而开展全表扫描,如: select id from t
where num is null
可以在num上设置私下认可值0,确定保障表中num列未有null值,然后那样查询: select
id from t where num=0 3.应尽量幸免在 where
子句中应用金沙国际唯一官网网址www.2979.com,!=或<>操作符,不然将引擎抛弃行使索引而举办全表扫描。
4.应尽量制止在 where 子句中应用 or
来三翻五次条件,不然将促成内燃机吐弃接受索引而张开全表扫描,如: select id
from t where num=10 or num=20 能够那样查询: select id from t where
num=10 union all select id from t where num=20 5.in 和 not in
也要慎用,不然会诱致全表扫描,如: select id from t where num in
对于一而再的数值,能用 between 就绝不用 in 了: select id from t where num
between 1 and 3 6.底下的询问也将引致全表扫描: select id from t where
name like ‘%abc%’ 若要升高功能,能够思谋全文字笔迹核实索。 7.假使在 where
子句中应用参数,也会促成全表扫描。因为SQL独有在运转时才会分析局地变量,但优化程序不能将访请安顿的取舍推迟到运维时;它必得在编译时实行抉择。然则,尽管在编译时创探望谈铺排,变量的值依旧未知的,因此不可能作为目录选用的输入项。如下边语句将开展全表扫描:
select id from t where num=@num 能够改为勉强查询利用索引: select id
from t with where num=@num 8.应尽量防止在 where
子句中对字段实行表明式操作,那将形成内燃机遗弃选取索引而进行全表扫描。如:
select id from t where num/2=100 应改为: select id from t where
num=100*【www.2979.com】php 管理上百万条的数据库如何抓实管理查询速度_php手艺_脚本之家。2
9.应尽量防止在where子句中对字段实行函数操作,那将促成斯特林发动机放任使用索引而开展全表扫描。如:
select id from t where substring=’abc’–name以abc开端的id select id from
t where datediff(day,createdate,’二零零五-11-30’卡塔尔=0–‘2007-11-30’生成的id
应改为: select id from t where name like ‘abc%’ select id from t where
createdate>=’二〇〇五-11-30′ and createdate


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图