`
ych19850810
  • 浏览: 31749 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql语句中的<>和in

阅读更多
今天优化了一段项目中的代码。代码的作用就是在用户表和用户账户表中查出所有有账户的用户,当然查出来的用户应该是不重复的(distinct一下),这2个表中的记录大约都为2万条左右,数据量还是很大的,代码通过hibernate的转换出来是这样的:
select * from ( select rownumber() over() as rownumber_, row_.* from ( select distinct userpo1_.ID as col_0_0_ from
RUN08110.T_ACCUSR accountuse0_ inner join RUN08110.T_USRINFO userpo1_ on accountuse0_.USER_ID=userpo1_.ID where 1=1
and accountuse0_.CHK_FLAG<>0 and (userpo1_.IDENTITY in (4 , 5 , 6 , 7)) ) as row_ ) as temp_ where rownumber_ <= ?
很简单的一条语句,没有必要详细的解释。看起来任何问题都没有,运行时肯定不会报错,但查询速度非常非常慢,从后台取出数据到前台分页显示,如果计算机性能不太好,可能需要1分半钟的时间,问题困扰了我很长时间,我尝试着更换表之间的连接方式,但是效果很不明显,真是百思不得其解。后来和同事一起分析了一下,我把'<>'换成了'>',把 'in (4 , 5 ,6 , 7)'换成了'>3'(和以前的条件是等价的),重启服务器,再执行一遍查询,简直太不可思议了,查询速度非常非常快,优化成功!看来用sql查询时'<>'以及'in'不是随便用的,使用得不当可能会严重影响查询速度,要慎用!
3
1
分享到:
评论

相关推荐

    lecco sql export pro(SQL优化器)

    当然,你也可以从 源语句和重写后的SQL语句中任选两条进行比较&lt;br&gt;&lt;br&gt; 从比较的结果可以看到,重写得到的SQL124把第一个Exists改写成了In;在字段DPT_ID上进行了合并空字符串的操作以诱导数据库先执行子查询中的...

    Sqlserver2000经典脚本

    3.6.2 字符串在编号查询中的应用示例及常见问题.sql&lt;br/&gt;│ │ 3.6.3 动态参数的存储过程示例.sql&lt;br/&gt;│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql&lt;br/&gt;│ │ 3.7.3 text与ntext字段的复制和合并...

    C#编程经验技巧宝典

    72&lt;br&gt;&lt;br&gt;0102 将字符串首字母转换大写 72&lt;br&gt;&lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72&lt;br&gt;&lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73&lt;br&gt;&lt;br&gt;4.2 获取字符串信息 73&lt;br&gt;...

    SQL语句常用汇总

    &lt;br&gt;&lt;br&gt;Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" &lt;br&gt;&lt;br&gt;╔--------------------╗ &lt;br&gt;☆ 添加数据记录 ☆ &lt;br&gt;╚--------------------╝ &lt;br&gt;sql="insert into 数据表 (字段1,字段2,...

    mysql5.1中文手册

    在SQL语句中使用COLLATE&lt;br&gt;10.3.9. COLLATE子句优先&lt;br&gt;10.3.10. BINARY操作符&lt;br&gt;10.3.11. 校对确定较为复杂的一些特殊情况&lt;br&gt;10.3.12. 校对必须适合字符集&lt;br&gt;10.3.13. 校对效果的示例&lt;br&gt;10.4. 字符集支持影响...

    Golang sqlx 使用sql语句 Where in 解决办法

    方法1、使用语言的for语句循环生成SQL语句中的“?”,类似这样: 新建方法 func placeholders(n int) string { var b strings.Builder for i := 0; i 0 { b.WriteString("?") } return b.String() }  调用...

    MYSQL培训经典教程(共两部分) 1/2

    数据库优化 177&lt;br&gt;8.1 索引的使用 178&lt;br&gt;8.1.1索引对单个表查询的影响 ...和TEXT类型 185&lt;br&gt;8.2.3 使用ANALYSE过程检查表列 186&lt;br&gt;8.2.3 总结 187&lt;br&gt;8.3 SQL查询的优化 187&lt;br&gt;8.3.1 使用EXPLAIN语句检查SQL语句 ...

    MYSQL培训经典教程(共两部分) 2/2

    数据库优化 177&lt;br&gt;8.1 索引的使用 178&lt;br&gt;8.1.1索引对单个表查询的影响 ...和TEXT类型 185&lt;br&gt;8.2.3 使用ANALYSE过程检查表列 186&lt;br&gt;8.2.3 总结 187&lt;br&gt;8.3 SQL查询的优化 187&lt;br&gt;8.3.1 使用EXPLAIN语句检查SQL语句 ...

    C#.net_经典编程例子400个

    7&lt;br&gt;1.2 工具栏设计 7&lt;br&gt;实例007 带背景的工具栏 7&lt;br&gt;实例008 浮动工具栏 8&lt;br&gt;实例009 带下拉菜单的工具栏 9&lt;br&gt;实例010 具有提示功能的工具栏 9&lt;br&gt;1.3 状态栏设计 10&lt;br&gt;实例011 在状态栏中显示...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    18.0&lt;br&gt;1.23&lt;br&gt;&lt;br&gt;1.10&lt;br&gt;&lt;br&gt;每秒插入实体&lt;br&gt;&lt;br&gt;(20次insert)&lt;br&gt;41&lt;br&gt;21&lt;br&gt;1.95&lt;br&gt;&lt;br&gt;更新实体&lt;br&gt;&lt;br&gt;(20次单条update)&lt;br&gt;27&lt;br&gt;19&lt;br&gt;&lt;br&gt;SqlMap:24&lt;br&gt;1.42&lt;br&gt;&lt;br&gt;1.13&lt;br&gt;&lt;br&gt;查询结果集(平均101...

    ORACLE精品脚本笔记

    监控当前数据库谁在运行什么SQL语句 &lt;br&gt;&lt;br&gt;SELECT osuser, username, sql_text from v$session a, v$sqltext b &lt;br&gt;where a.sql_address =b.address order by address, piece; &lt;br&gt;&lt;br&gt;13. 监控字典缓冲区 &lt;br&gt;...

    C#程序开发范例宝典10

    533&lt;br&gt;10.19 函数查询 535&lt;br&gt;实例364 在查询语句中使用格式化函数 536&lt;br&gt;实例365 在查询语句中使用字符串函数 537&lt;br&gt;实例366 在查询中使用日期函数 538&lt;br&gt;10.20 having语句应用 540&lt;br&gt;实例367 利用...

    经典SQL语句大全

    法一:select * into b from a where 1&lt;&gt;1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3...

    在java控制台提取sql语句

    在java的控制台中看到的sql日志通常是如下的样子, Preparing: SELECT in (0,1) ORDER BY i.... 使用方法复制sql语句包括prepare丢到第一个文本框中,然后点start。转换好的就在下面了。 程序的页面可以直接双击打开。

    SQL语句大全【经典教程】

    SQL语句教程(05) IN .................................................3 ...... SQL语句教程(29) 外来键......................................18 SQL语句教程(30) Drop Table....................................

    SQL学习宝

    可以在conn.inc文件中把xx.mdb换成你自己的数据库名,&lt;br&gt;其他程序不用修改即可使用。&lt;br&gt;3.收藏大量经典SQL语句,用户可以添加收藏。&lt;br&gt;4.所有程序均有详细说明。是ASP+ACCESS的最好实例。是ASP程序员的好帮手。

    SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句2.txt

    SQL语句优化——in,not in,exists,not exists, left join...on博客所需SQL语句2.txt,欢迎下载!

    SQL语句left join/right join/inner join 的用法比较

    SQL语句left join/right join/inner join 的用法比较 SQL语句left join/right join/inner join 的用法比较

Global site tag (gtag.js) - Google Analytics