设为首页 加入收藏

TOP

【1】数据库索引
2015-11-21 01:52:51 来源: 作者: 【 】 浏览:0
Tags:数据库 索引

因为日常大多是建立在ORM框架下,加上对海量数据的认识并不多,所以索引一直是一个陌生的知识点。话不多说开始总结:

一、什么是索引?

索引是对数据库表中一个或多个列的值进行排序的结构,通常在底层使用B树或B+树来实现。关于B树相关知识,July的博客相当详细:

http://blog.csdn.net/v_JULY_v/article/details/6530142/

二、没有索引的数据库世界是什么样的?

假设我们有一张表,里面有10万条数据。如果没有索引,当查找一条数据时就要扫描全表,如果要查找的记录在表的最后一条,那么在没有任何优化下需要进行10^5次I/O。如果使用索引则可以降到log(10^6)级别,效果是显著的。

三、索引的代价?

1、建立索引将带来额外的开销,这个开销和所建立的索引复杂度有关。

2、当数据库进行更新、删除操作等时,也需要对索引进行同步维护,这也是额外的开销。

3、不恰当的索引并无法对性能带来显著改善。

四、为什么不用数据文件直接排序建立索引而独立出来?

1、单个索引可以这么做,但多个索引无法排序(例如学生信息,既根据学号又要根据姓名来排序是不可能的)

2、索引行一般比数据行要短,当数据更新时候调整索引行的开销比纯数据行更少

3、综上所述,需要索引文件来保存索引

五、MySQL中索引分类

1、普通索引(INDEX)

这是最基本的索引,没有任何限制。

2、唯一索引(UNIQUE INDEX)

索引列的值必须唯一,但允许有空值。

3、主键索引(PRIMARY KEY)

是一种特殊的索引,不允许有空值,一般是在建表时同时创建索引。

4、组合索引

5、全文索引

6、外键索引(只有innodb存储引擎才支持)

六、几个索引原则:

1、选择用来搜索的作为索引列。例如经常根据身份证号来查询用户,那么应该利用身份证号作为索引。

2、使用唯一性索引。对于唯一索引的列,索引的效果最好,而具有多个重复值的列,其索引效果最差。

3、使用短索引。

4、利用最左前缀。

5、不要过度索引。

6、不要在列上进行运算,这将导致索引失效而进行全表扫描

7、少用like语句操作。例如:like “%aaa%”不会索引,而like"aaa%"可以使用索引

七、Mysql中可以用EXPLAIN来查看语句执行过程,利于分析和优化

【参考资料】

使用MYSQL索引

MySQL优化数据库结构

MySQL性能优化的21个最佳实践

理解MySQL――索引与优化

如何创建MySQL索引

数据库索引实现原理

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java连接MySQL 下一篇hadoop集群安装(多机,非伪集群)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: