本文主要目的是关于mysql千万级数据量以后,sql查询注意要点。
笔者所用的mysql版本为8.0, follow关注表数据量2kw, 数据库引擎为Innodb
1、select count(*) , select count(1) , select count(`id`) 在表千万级以上时,都比较慢,所以尽量少用
2、不要在包含not in或者in的SQL语句上使用max(`id`) 或者min(`id`),否则必然慢查询
desc或explain的结果只作为参考,当两条sql语句的查询分析结果完全相同时,并不等于执行时长接近
max或者min函数只能在没有任何查询条件的情况下使用
3、order by rand() 只是mysql的一个示例语法,生产别用!
4、替换order by rand的一个思路是:查询符合条件的最大id, 假设为maxId, 然后代码层mt_rand(1,maxId), 然后sql后面加上where id >=randomId limit 1
未完待续 ......