SQL 百万级别记录优化之 -- where 字段加索引
2016-08-15 00:00
155 查看
摘要: 无论是oracle 还是 mysql,面临百万以上级别的数据,性能优化都是至关重要的,用的好了,同样一个查询结果,可能毫秒级,用的不好,可能几十秒。。。
update TIMAGEDATA_TD set ASSIGNTOSERVERID = 1 where IMAGEFILEID in (
select IMAGEFILEID from TIMAGEREG_TD where UPLOADDATAFILEID = 187636
);
在索引优化之前,查询到的结果如下:
update TIMAGEDATA_TD set ASSIGNTOSERVERID = 1 where IMAGEFILEID in (
select IMAGEFILEID from TIMAGEREG_TD where UPLOADDATAFILEID = 187636
);
TIMAGEDATA_TD 是一个百万以上级别的大表(实际上达到了千万级别) TIMAGEREG_TD 是一个相对来说小数量级的表,大概十万级别,且存在删除记录的业务逻辑
在索引优化之前,查询到的结果如下:
可以看到这里 千万左右的记录已经达到了 可怕的23 秒,因为sql 中是比较简单的, 没有过多的表间,字段间关联,所以不涉及到不该有的性能下降点,因此根据经验23秒相当非常态!!!
因为这里sql很简单,第一点就想到了是索引的问题,然后问过同事之后, 果然这个是由于新业务改造新加入的字段,不出所料,一查果然没有索引,所以只好加上索引 : CREATE INDEX TIMAGEDATA_TD_IMAGEFILEID ON TIMAGEDATA_TD (IMAGEFILEID ASC)
附上加上索引后的查询结果:
相关文章推荐
- SQL 百万级别记录优化之 -- 单引号带来的性能下降
- ORACLE百万记录SQL语句优化技巧
- sql查询调优之where条件排序字段以及limit使用索引的奥秘
- ORACLE百万记录SQL语句优化技巧
- 避免在sql的where中对字段进行转换(函数转换/操作符转换/隐式转换)------索引会失效从而导致慢查询
- ORACLE百万记录SQL语句优化技巧
- ORACLE百万记录SQL语句优化技巧
- ORACLE百万记录SQL语句优化技巧
- Oracle百万记录sql语句优化技巧
- sql查询调优之where条件排序字段以及limit使用索引的奥秘
- SQL通用优化方案(where优化、索引优化、分页优化、事务优化、临时表优化)
- 数据库百万级别的sql优化
- mysql索引以及慢SQL优化记录【转慕课】
- sql order by与索引之间的关系(where条件出现字段才有效)
- MS SqlSever一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】[转]
- Oracle百万记录sql语句优化技巧
- mybatis查询sql:where语句“查询时间字段书写问题”引发的索引失效
- SQL优化-索引 (六)改善SQL语句
- SQL优化-索引
- SQL优化-索引 (三)只要建立索引就能显著提高查询速度