标签:code 替代 like har int null 简单的 主键 val
如果明知道只会有一条返回数据,则可避免全表扫描,在第一次找到数据时就返回
like语句一般业务要求都是 ‘%关键字%‘这种形式,但是依然要思考能否考虑使用右模糊的方式去替代产品的要求
INSERT into person(name,age) values(‘A‘,24),(‘B‘,24),(‘C‘,24);
因此我们先查出偏移后的主键,再根据主键索引查询数据块的所有内容即可优化
# 反例(耗时129.570s)
select * from task_result LIMIT 20000000, 10;
# 正例(耗时5.114s)
SELECT a.* FROM task_result a, (select id from task_result LIMIT 20000000, 10) b where a.id = b.id;
# 说明 task_result表为生产环境的一个表,总数据量为3400万,id为主键,偏移量达到2000万
说明:count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行
COUNT(*)=COUNT(1)>COUNT(id)
数据库在查询的时候会作一层隐式的转换,比如 varchar 类型字段通过 数字去查询时,索引会丢失
标签:code 替代 like har int null 简单的 主键 val
原文地址:https://www.cnblogs.com/vaen/p/14271603.html