数据库索引
2015-12-16 00:00
246 查看
摘要: 浅析数据库索引
索引是什么
索引是一种为了实现快速查找算法的数据结构。
利用优于顺序查找的算法查询数据,需要特定的数据结构,这种数据结构就是数据库的索引
索引以某种方式引用数据
顺序查找复杂度O(n)
索引越多越好吗
因为要更新索引,所以建立索引利于查询不利于更改(添加,删除,修改)。
频繁操作的表不要添加过多的索引。
索引过多可能也不利于数据的读取,要扫描多份索引。
通常索引建立在哪些列
经常需要搜索的列(加快搜索的速度)
主键(强制该列的唯一性和组织表中数据的排列结构)
经常用在连接的列(主要是一些外键, 可以加快连接的速度)
经常需要根据范围进行搜索的列(因为索引已经排序,其指定的范围是连续的)
经常需要排序的列(因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间)
经常使用在WHERE子句中的列(加快条件的判断)
通常什么时候不建立索引
1,表记录比较少
2,索引的选择性较低
索引的选择性(Selectivity),是指不重复的索引值(也叫基数,Cardinality)与表记录数(#T)的比值:
Index Selectivity = Cardinality / #T(显然选择性的取值范围为(0, 1],选择性越高的索引价值越大)
索引是什么
索引是一种为了实现快速查找算法的数据结构。
利用优于顺序查找的算法查询数据,需要特定的数据结构,这种数据结构就是数据库的索引
索引以某种方式引用数据
顺序查找复杂度O(n)
索引越多越好吗
因为要更新索引,所以建立索引利于查询不利于更改(添加,删除,修改)。
频繁操作的表不要添加过多的索引。
索引过多可能也不利于数据的读取,要扫描多份索引。
通常索引建立在哪些列
经常需要搜索的列(加快搜索的速度)
主键(强制该列的唯一性和组织表中数据的排列结构)
经常用在连接的列(主要是一些外键, 可以加快连接的速度)
经常需要根据范围进行搜索的列(因为索引已经排序,其指定的范围是连续的)
经常需要排序的列(因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间)
经常使用在WHERE子句中的列(加快条件的判断)
通常什么时候不建立索引
1,表记录比较少
2,索引的选择性较低
索引的选择性(Selectivity),是指不重复的索引值(也叫基数,Cardinality)与表记录数(#T)的比值:
Index Selectivity = Cardinality / #T(显然选择性的取值范围为(0, 1],选择性越高的索引价值越大)
相关文章推荐
- 删除EM,强制结束EM进程后,启动数据库ORA-00119,ORA-00132报错的解决方法
- redis相关
- ORACLE 查询被锁住的对象,并结束其会话的方法
- oracle ORA-00031:session marked for kill(标记要终止的会话)解决方法
- SQL注入与防范(PreparedStatement的优点)----JDBC-3
- 安卓sqlite数据库中sql语句的问题
- sql server中区分大小写问题
- 关于重命名sql server数据库名的错误
- OS X下安装Redis及配置开机启动
- MySQL安装--ubuntu
- My SQL ON DUPLICATE KEY UPDATE
- 数据库的配置文件注释
- MySql ibdata1文件太大如何缩小
- MySQL主从基本搭建
- mysql错误 Access denied for user 'root'@'localhost' (using password:YES) 解决方案
- mysql ERROR 1045 : Access denied for user ''@'localhost' (using password: NO)
- Mysql命令行查询中文乱码问题的解…
- 将.sql文件导入mysql数据库
- MongoDB 操作简捷版
- mysql主要命令(转)