php数据库读取优化,数据库应用优化(一)

1.尽量避免在列上进行运算,这样会导致索引失效。例如原句为:

SELECT * FROM table WHERE YEAR(d) >= 2019;

//优化为

SELECT * FROM table WHERE d>='2019-01-01'

2.使用JOIN时,应该用小结果集驱动打大结果集。同时把复杂的JOIN查询拆分多个Query。因为JOIN多个表时,可能导致更多的锁定和堵塞。例如原句为:

SELECT * FROM a JOIN b ON a.id=b.id

LEFT JOIN c ON c.time = a.date

LEFT JOIN d ON c.pid=b.aid

LEFT JOIN e ON e.cid=a.did

3.注意like模糊查询的时,避免%%,SQL语句并未用到索引,而且是全表搜索。例如原句为:

SELECT * FROM table WHRER name LIKE '%keyword%'

//优化为

SELECT column FROM table WHERE name like ‘keyword%’

查询时尽量用自己需要的字段,这对查询速度不会有什么影响,但可以节省内存。例如原句为:

SELECT * FROM table

//优化为

SELECT username,password FROM table

5.批量插入语句节省交互。例如原句为:

INSERT INTO (id,name) VALUES (1,a);

INSERT INTO (id,name) VALUES (2,b);

INSERT INTO (id,name) VALUES (3,c);

//优化为

INSERT INTO (id,name) VALUES (1,a), (2,b),(3,c)

6.limit基数比较大时使用between。例如原句为:

SELECT username,password FROM table limit 1000000,10

//优化为

SELECT username,password FROM table where id between 1000000 and 1000010

//between限定比limit快,所以海量数据访问时,建议用between或者where替换掉limit,但是between也有缺陷,如果id不连续。总读取的数据会少于预计数据

7.建议不实用rand随机获取多条记录

8.避免使用NULL

9.不要使用count(id),可以直接count(*)

10.不要做无所谓的排序操作

还有一些索引的合理使用

♦️合理设计和使用索引

♦️在关键字的索引上,建与不建索引,查询速度相差100倍

♦️差的索引和没有索引效果一样

♦️索引并非越多越好,因为维护索引需要成本

♦️每个表的索引应在5个以下,应合理利用部分索引和联合索引

♦️不在结果集中的结果单一的列上建立索引

♦️建索引的字段结果集最好分布均匀,或者符合正态分布

本作品采用《CC 协议》,转载必须注明作者和本文链接

七述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值