Where条件的in里面放太多数据导致很慢
来源:互联网 发布:我打软件技巧 编辑:程序博客网 时间:2024/05/21 09:02
比如:select * from TableA where ID in (42,216,219,230,231,220,249,250,221,251,252,217,253,255,256,254,257,258,1804)
52W数据,查询速度19386ms,好慢怎么办?程序都卡死了。
那么试一下百度搜索到的优化方式?
1.将in里面的ID分拆查询,再合并数据
select * from TableA where ID=42;select * from TableA where ID=216;……
然并卵,18663ms,还是好慢的
2.将in里面的ID放到临时表,再通过联合查询
select * into #tmpClass from TableClass where QID in (42,216,219,230,231,220,249,250,221,251,252,217,253,255,256,254,257,258,1804);select * from TableA inner join #tmpClass on TableA.QID=#tmpClass.QID
33570ms,没用
总结:
1.没用找到特别能优化的方法。而事实上,程序业务并不需要查询表里面所有的字段*,把*改为自己需要的那几个字段,则很快查询出来。in查询(140ms),分拆单独查询(263ms)。
2.去掉没有数据的QID并没有影响到查询的速度。比如42、216,,219是没有数据的,去不去掉都没看见有什么影响,也许是自己数据量小吧。
通过此次优化,觉得以后可能很多程序上的sql写法就不要贪方便直接写*号了,以后优化也许会根据业务功能逐个进行优化,大而全的优化也许大概也有个上限。
0 0
- Where条件的in里面放太多数据导致很慢
- Hibernate HQL的条件中如果in包含太多的参数会导致堆栈溢出
- sql的left join中where条件放哪儿?
- 关于where的条件查询in
- 联合查询时过滤条件放在ON之后和放在WHERE之后的区别
- Hibernate HQL的条件中如果in包含太多的参数会导致堆栈溢出StackOverflowError、org.hibernate.hql.ast.util.NodeTraverser.visit
- 数据where条件过滤
- where查询条件的指定,between and,in,like
- ORACLE WHERE 条件里面如何实现分支。
- 存储过程中动态条件的添加 where条件 in条件中字符串参数
- where in 数据查询的用法
- 对与主表的筛选条件,应该放在where后面
- SQL中条件放在on后与where后的区别
- latex文件里面一个章节放的图表太多编译出现oo many unprocessed floats的解决方案
- mongodb的where条件
- Thinkphp的where条件
- 针对where条件中日期型字段前面加函数的慢查询的优化
- MYSQL联表查询LEFT JOIN 中 WHERE条件放在ON条件里和外部的区别
- 基于Django的在线MOOC学习系统(3)——创建 user App 并设计 models.py
- 如何将数据序列化为XML格式
- 【贪心】洛谷 P1007 独木桥
- 获取项目文件目录下的所有文件路径
- Spring整合JUnit4测试使用注解引入多个配置文件
- Where条件的in里面放太多数据导致很慢
- Android开发入门(二)——基本语法2
- ADO.Net ExecuteScalar、ExecuteReader不只是我想的这样的用处。
- 深入浅出讲述提升 WordPress 性能的九大秘笈
- 愚蠢的高级
- 我纠结的sql返回受影响行数与判断是否成功的问题
- .net对于Xml的常规操作
- 一行排奇数列的HTML排版
- css Hover的巧用