数据库索引
2016-05-20 11:42
323 查看
mysql索引
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
理论上每张表里面最多可创建16个索引,不过除非是数据量真的很多,否则过多的使用索引也不是那么好玩的.
索引类型
普通索引这是最基本的索引,它没有任何限制,比如上文中为title字段创建的索引就是一个普通索引,MyIASM中默认的BTREE类型的索引,也是我们大多数情况下用到的索引。
唯一索引
与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值(注意和主键不同)。如果是组合索引,则列值的组合必须唯一,创建方法和普通索引类似。
全文索引(FULLTEXT)
MySQL从3.23.23版开始支持全文索引和全文检索,FULLTEXT索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或CREATE INDEX被添加。////对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。不过切记对于大容量的数据表,生成全文索引是一个非常消耗时间非常消耗硬盘空间的做法。
单列索引、多列索引
索引优缺点
创建索引可以很大程度上改善数据库的查询速度,但是同时有利也有弊,索引的存在会降低表的更新速度,比如对表的update,insert,delete 带来额外的负担何时使用聚集索引或非聚集索引?
动作描述 | 使用聚集索引 | 使用非聚集索引 |
---|---|---|
列经常被分组排序 | 使用 | 使用 |
返回某范围内的数据 | 使用 | 不使用 |
一个或极少不同值 | 不使用 | 不使用 |
小数目的不同值 | 使用 | 不使用 |
大数目的不同值 | 不使用 | 使用 |
频繁更新的列 | 不使用 | 使用 |
外键列 | 使用 | 使用 |
主键列 | 使用 | 使用 |
频繁修改索引列 | 不使用 | 使用 |
优化索引
使用短索引对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
相关文章推荐
- 数据库设计的特点及方法
- 连接oracle无监听器
- MemCache详细解析
- Drill sql 关键字
- 第一节 MongoDB介绍及下载与安装
- 菜鸟的sql注入历程
- 结合MongoDB开发LBS应用
- mysql全备份+增量备份笔记总结
- [未完待续]explain sql解析器
- 源码安装mysql
- Redis的三种启动方式
- Redis的安装和配置单实例篇
- 基于Oracle的私有云架构探析(连载一)
- 导入数据库时,因数据量过大,导致导入失败
- sql merge
- redis
- mybaits oracle 批量插入
- Mysql的一些经典命令
- 【Mongodb】数据库操作--备份、还原、导出和导入
- Sql server cast(as nvarchar) 默认长度问题