表索引字段嵌套函数引起的性能问题
来源:互联网 发布:java报表是什么 编辑:程序博客网 时间:2024/05/23 20:58
先看这句SQL
SELECT agentalias, COUNT (DISTINCT (callin))
FROM (SELECT agentalias, ani callin
FROM table_a
WHERE TO_DATE (starttime, 'yyyymmddhh24miss') BETWEEN TRUNC
(SYSDATE)
AND SYSDATE
AND connectlength > 0
AND agentalias = '4003'
UNION ALL
SELECT agentalias, connectno callout
FROM table_b
WHERE TO_DATE (starttime, 'yyyymmddhh24miss') BETWEEN TRUNC
(SYSDATE)
AND SYSDATE
AND connectlength > 0
AND LENGTH (TRIM (connectno)) > 5
AND agentalias = '4003')
GROUP BY agentalias
再看同样功能的SQL
SELECT agentalias, COUNT (DISTINCT (callin))
FROM (SELECT agentalias, ani callin
FROM table_a
WHERE starttime BETWEEN TO_CHAR (TRUNC (SYSDATE), 'yyyymmdd')
AND TO_CHAR (SYSDATE, 'yyyymmddhh24miss')
AND connectlength > 0
AND agentalias = '4003'
UNION ALL
SELECT agentalias, connectno callout
FROM table_b
WHERE starttime BETWEEN TO_CHAR (TRUNC (SYSDATE), 'yyyymmdd')
AND TO_CHAR (SYSDATE, 'yyyymmddhh24miss')
AND connectlength > 0
AND LENGTH (TRIM (connectno)) > 5
AND agentalias = '4003')
GROUP BY agentalias
table_a、table_b 表中 starttime 都是 index
执行结果中,第一个SQL很慢,查看查询计划走的是全表扫描,第二个SQL很快,因为走的索引
结论:通过SQL比较,发现在当在查询字段starttime,亦即index字段上加上函数后就会出现不走index而走全表扫描的情况。这里是不是可以得出如果在当index字段作为搜索条件时,如果在index上使用了函数那么该index将不会起到作用?
- 表索引字段嵌套函数引起的性能问题
- 字段类型修改引起的性能问题
- 外键不加索引引起的性能问题
- 循环中读取数据库、嵌套循环引起的性能问题
- 常见引起性能的问题
- sql语句中的字段类型与sql表字段类型不一致可能引起的性能问题
- 记一次处理oracle分区表索引"乱用"引起的SQL性能问题
- oracle添加字段引起的问题
- 一个没有索引引起的问题
- SQL 2008 索引损坏引起的问题
- imagecreatefrompng函数引起的问题
- 英文大小写引起的性能问题
- Hibernate分页可能引起的性能问题
- Race Condition引起的性能问题
- Race Condition引起的性能问题
- Race Condition引起的性能问题
- Race Condition引起的性能问题
- 引起数据库性能问题的因素
- CVS 使用实例
- ORA-12537错误的解决
- flash中做获取鼠标点击的事件
- .Net开发中的多线程编程
- CSS实现未知内容高度的垂直水平居中(改良版)
- 表索引字段嵌套函数引起的性能问题
- apache配置访问exe文件
- Launcher(主屏/待机) App的BUG: 没有初始化定义CellLayout中屏幕方向的布尔值参数
- Create Zip file in MemoryStream
- 认识Selenium---简单介绍
- HEX文件和BIN文件格式的区别
- 认识Selenium --- Selenium IDE的使用
- usb 驱动
- Head First C# 中文版 第10章 异常处理 page468