今天优化了一段项目中的代码。代码的作用就是在用户表和用户账户表中查出所有有账户的用户,当然查出来的用户应该是不重复的(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'不是随便用的,使用得不当可能会严重影响查询速度,要慎用!
分享到:
相关推荐
当然,你也可以从 源语句和重写后的SQL语句中任选两条进行比较<br><br> 从比较的结果可以看到,重写得到的SQL124把第一个Exists改写成了In;在字段DPT_ID上进行了合并空字符串的操作以诱导数据库先执行子查询中的...
3.6.2 字符串在编号查询中的应用示例及常见问题.sql<br/>│ │ 3.6.3 动态参数的存储过程示例.sql<br/>│ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql<br/>│ │ 3.7.3 text与ntext字段的复制和合并...
72<br><br>0102 将字符串首字母转换大写 72<br><br>0103 如何进行字节数组和字符串的相互转换 72<br><br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73<br><br>4.2 获取字符串信息 73<br>...
<br><br>Sql="select * from 数据表 where 字段名 in ('值1','值2','值3')" <br><br>╔--------------------╗ <br>☆ 添加数据记录 ☆ <br>╚--------------------╝ <br>sql="insert into 数据表 (字段1,字段2,...
在SQL语句中使用COLLATE<br>10.3.9. COLLATE子句优先<br>10.3.10. BINARY操作符<br>10.3.11. 校对确定较为复杂的一些特殊情况<br>10.3.12. 校对必须适合字符集<br>10.3.13. 校对效果的示例<br>10.4. 字符集支持影响...
方法1、使用语言的for语句循环生成SQL语句中的“?”,类似这样: 新建方法 func placeholders(n int) string { var b strings.Builder for i := 0; i 0 { b.WriteString("?") } return b.String() } 调用...
数据库优化 177<br>8.1 索引的使用 178<br>8.1.1索引对单个表查询的影响 ...和TEXT类型 185<br>8.2.3 使用ANALYSE过程检查表列 186<br>8.2.3 总结 187<br>8.3 SQL查询的优化 187<br>8.3.1 使用EXPLAIN语句检查SQL语句 ...
数据库优化 177<br>8.1 索引的使用 178<br>8.1.1索引对单个表查询的影响 ...和TEXT类型 185<br>8.2.3 使用ANALYSE过程检查表列 186<br>8.2.3 总结 187<br>8.3 SQL查询的优化 187<br>8.3.1 使用EXPLAIN语句检查SQL语句 ...
7<br>1.2 工具栏设计 7<br>实例007 带背景的工具栏 7<br>实例008 浮动工具栏 8<br>实例009 带下拉菜单的工具栏 9<br>实例010 具有提示功能的工具栏 9<br>1.3 状态栏设计 10<br>实例011 在状态栏中显示...
18.0<br>1.23<br><br>1.10<br><br>每秒插入实体<br><br>(20次insert)<br>41<br>21<br>1.95<br><br>更新实体<br><br>(20次单条update)<br>27<br>19<br><br>SqlMap:24<br>1.42<br><br>1.13<br><br>查询结果集(平均101...
监控当前数据库谁在运行什么SQL语句 <br><br>SELECT osuser, username, sql_text from v$session a, v$sqltext b <br>where a.sql_address =b.address order by address, piece; <br><br>13. 监控字典缓冲区 <br>...
533<br>10.19 函数查询 535<br>实例364 在查询语句中使用格式化函数 536<br>实例365 在查询语句中使用字符串函数 537<br>实例366 在查询中使用日期函数 538<br>10.20 having语句应用 540<br>实例367 利用...
法一:select * into b from a where 1<>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日志通常是如下的样子, Preparing: SELECT in (0,1) ORDER BY i.... 使用方法复制sql语句包括prepare丢到第一个文本框中,然后点start。转换好的就在下面了。 程序的页面可以直接双击打开。
SQL语句教程(05) IN .................................................3 ...... SQL语句教程(29) 外来键......................................18 SQL语句教程(30) Drop Table....................................
可以在conn.inc文件中把xx.mdb换成你自己的数据库名,<br>其他程序不用修改即可使用。<br>3.收藏大量经典SQL语句,用户可以添加收藏。<br>4.所有程序均有详细说明。是ASP+ACCESS的最好实例。是ASP程序员的好帮手。
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 的用法比较