用不上索引的SQL语句
下面介绍六种建立索引后不起作用的sql语句。
1、使用不等于操作符(<>, !=)
SELECT *
FROM dept
WHERE staff_num <> 1000; ×
SELECT *
FROM dept
WHERE staff_num < 1000
OR staff_num > 1000; √
2、使用 is null 或 is not null
任何包含null值的列都将不会被包含在索引中。
解决这个问题的办法就是:建表时把需要索引的列
定义为非空(not null)
3、索引列使用函数或计算
SELECT *
FROM fin_ipb_feeinfo
WHERE trunc(fee_date) > '2007-01-01'; ×
SELECT *
FROM fin_ipb_feeinfo
WHERE fee_date > to_date( '2007-01-01','yyyy-mm-dd'); √
WHERE sal*1.1>950 ×
WHERE sal>950/1.1 √
4、索引列与比较值数据类型不一致
emp_no: NUMBER型
WHERE emp_no=123(好) √
WHERE emp_no= '123'(也可)
emp_type:CHAR型
WHERE emp_type=123 (此时,查询时,不利用索引列) ×
WHERE emp_type='123‘ √
5、复合索引,必须使用主索引列
例:复合索引(deptno,job)
WHERE deptno=20 AND job=’MANAGER’ √
WHERE deptno=20 √
WHERE job=’MANAGER’ AND deptno=20 √
WHERE job=’MANAGER’ ×
6、like子句
WHERE name LIKE ‘王%’ √
WHERE name LIKE ‘%王%’ ×
WHERE name LIKE ‘%王’ ×
用不上索引的SQL语句的更多相关文章
- 数据库 基于索引的SQL语句优化之降龙十八掌(转)
一篇挺不错的关于SQL语句优化的文章,因不知原始出处,故未作引用说明! 1 前言 客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急 ...
- 关于索引的sql语句优化之降龙十八掌
1 前言 客服业务受到SQL语句的影响非常大,在规模比较大的局点,往往因为一个小的SQL语句不够优化,导致数据库性能急剧下降,小型机idle所剩无几,应用服务器断连.超时,严重影响业务的正 ...
- MySQL索引详解(优缺点,何时需要/不需要创建索引,索引及sql语句的优化)
一.什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息. 二.索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提 ...
- (七)修改上一条SQL语句,NULL值的滤空函数nvl
修改上一条SQL语句 1.用c命令来修改(c 即 change ) 默认,光标闪烁位置指向上一条SQL语句的第一行.输入二则定位到第二行. c /错误的关键字/正确的关键字 SQL form emp; ...
- mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句
mysql查询今天.昨天.近7天.近30天.本月.上一月的SQL语句 这篇文章主要介绍了mysql查询今天.昨天.近7天.近30天.本月.上一月的SQL语句,一般在一些统计报表中比较常用这个时间段,需 ...
- SQL优化的四个方面,缓存,表结构,索引,SQL语句
一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所 ...
- 优化的四个方面,缓存,表结构,索引,SQL语句
一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所 ...
- 数据库索引和SQL语句使用经验
1.如果检索数据量超过30%的表中记录数,使用索引将没有显著的效率提高 2.在特定情况下,使用索引也许会比全表扫描慢,但这是同一个数量级上的差距:而通常情况下,使用索引比全表扫描要快几倍乃至几千倍! ...
- [SQL Server]利用索引改善sql语句
很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: 1.select * from table1 where name=''z ...
随机推荐
- Centos6.9安装JDK1.8
https://blog.csdn.net/zhangjm123/article/details/80784930
- pip升级Python程序包
列出当前安装的包: pip list 列出可升级的包: pip list --outdate 升级一个包: pip install --upgrade requests // mac,linux,un ...
- #define SIG_DFL ((void(*)(int))0)
在linux内的信号处理函数中,有#define SIG_DFL ((void(*)(int))0)和#define SIG_IGN ((void(*)(int))1)两个宏定义.要理解这两个宏定义, ...
- Django服务端读取excel文件并且传输到接口
path_name = "opboss_download_" + str(int(time.time())) + ".csv" print(path_name) ...
- 【linux】提醒"libc.so.6: version `GLIBC_2.14' not found"系统的glibc版本太低
原文链接:http://www.myexception.cn/linux-unix/1622052.html [linux]提示"libc.so.6: version `GLIBC_2.14 ...
- [转]Extjs中的迭代方法
原文地址:http://www.veryhuo.com/a/view/36701.html EXTJS 有很多的迭代方法,例如,你也许已知道的Ext.each,但还有另外一些不为人知且很有用的方法.首 ...
- MySQL的MVCC
基本概念 Multi-Version Concurrency Control 多版本并发控制,MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问:在编程语言中实现事务内存. ...
- u-boot2011.09 启动流程记录
start arch/arm/cpu/armv7/start.S 36 .globl _start 37 _start: b reset 136 reset: 137 bl save_boot_par ...
- 【转】全Javascript的Web开发架构:MEAN和Yeoman【译】
引言 最近在Angular社区的原型开发者间,一种全Javascript的开发架构MEAN正突然流行起来.其首字母分别代表的是:(M)ongoDB——noSQL的文档数据库,使用JSON风格来存储数据 ...
- Java编程的逻辑 (41) - 剖析HashSet
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...