MySQL的优化案例都来自:
MySQL · 性能优化 · MySQL常见SQL错误用法
Case 1: limit 100000000,1
SELECT *
FROM operation
WHERE type = 'SQLStats'
AND name = 'SlowLog'
ORDER BY create_time
LIMIT 1000, 10;
DBA(data base administrator)会选择采用建立组合索引的形式来增加访问速度。
关于检索的理解,检索是以空间换取时间的一个策略。作用是在使用where语句进行过滤的时候可以加快查询进度,对于and这种组合过滤条件则需要创建组合索引。原理尚不清楚。
但是这里的limit如果后面第一个参数非常大,这样的查询会非常慢。把每一页的最大值比如#2017-03-16 14:00:00#当成查询条件就可以
SELECT *
FROM operation
WHERE type = 'SQLStats'
AND name = 'SlowLog'
AND create_time > '2017-03-16 14:00:00'
ORDER BY create_time limit 10;
Case 2: where bpn(varchar(20)) = 10211313
mysql> explain extended SELECT *
> FROM my_balance b
> WHERE b.bpn = 14000000123
> AND b.isverified IS NULL ;
mysql> show warnings;
| Warning | 1739 | Cannot use ref access on index 'bpn' due to type or collation conve