SQL索引介绍
2016-03-30 18:56
309 查看
索引使用法则
在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。
应尽可能的避免更新 clustered(聚合) 索引数据列,因为 clustered索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。
创建索引的标准
①该列用于频繁搜索;②该列用于对数据进行排序;③该列中重复值少;④该列频繁出现在where中。
不适合建立索引的标准
①列中重复值多;②表中数据少(为小型表建立索引是不必要的,因为索引的时间可能比检索表的时间还要长);③频繁进行插入操作的列(因为每次新添加了数据,索引都需要重新维护)。
不要在建立的索引的数据列上进行下列操作
◆避免对索引字段进行计算操作
◆避免在索引字段上使用not,<>,!=
◆避免在索引列上使用IS NULL和IS NOT NULL
◆避免在索引列上出现数据类型转换
◆避免在索引字段上使用函数
◆避免建立索引的列中使用空值。
在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。
应尽可能的避免更新 clustered(聚合) 索引数据列,因为 clustered索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。
创建索引的标准
①该列用于频繁搜索;②该列用于对数据进行排序;③该列中重复值少;④该列频繁出现在where中。
不适合建立索引的标准
①列中重复值多;②表中数据少(为小型表建立索引是不必要的,因为索引的时间可能比检索表的时间还要长);③频繁进行插入操作的列(因为每次新添加了数据,索引都需要重新维护)。
不要在建立的索引的数据列上进行下列操作
◆避免对索引字段进行计算操作
◆避免在索引字段上使用not,<>,!=
◆避免在索引列上使用IS NULL和IS NOT NULL
◆避免在索引列上出现数据类型转换
◆避免在索引字段上使用函数
◆避免建立索引的列中使用空值。
相关文章推荐
- Oracle之高级查询
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- SQL Server 创建表 添加主键 添加列常用SQL语句
- Tomcat7+redis Session共享
- Redis基本使用
- mysql 分表
- sql Server 查询优化
- MySQL Got a packet bigger than 'max_allowed_packet' bytes错误配置
- sqlite manager serial number
- memcache 服务器状态信息
- 初次安装Mysql5.7以上版本后初始root密码找不到的问题
- mongodb增删改查
- 源码编译安装 MySQL 5.5.x 实践
- spring-data-redis用配置类连接时,抛异常Cannot get Jedis connection; nested exception is java.lang.NullPointerEx
- oracle 存储过程中调用存储过程
- SQL Server使用文件组备份降低备份文件占用的存储空间
- xampp下mariaDB数据库设置默认字符集utf8(Windows)
- sqlserver多表连接更新
- 基于redis排行榜的实战总结
- 提升项目性能的几个简单方法