mysql的数据库索引---------第一章
来源:互联网 发布:弹弹play mac 编辑:程序博客网 时间:2024/06/05 08:11
一。什么是索引:
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
二。索引的重要性
索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-Tree索引,则只需要进行log100(10^6)=3次页面读取,最坏情况下耗时30ms。这就是索引带来的效果,很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引。
三。索引的种类
这里举mysql为例
1.ALTER TABLE用来创建普通索引、UNIQUE索引、PRIMARY KEY索引、多列索引、全文索引。
2.CREATE INDEX可对表增加普通索引,UNIQUE索引,多列索引,全文索引。
3.可利用ALTER TABLE或DROP INDEX语句来删除索引
普通索引:alter table 表名 add index index_name(字段名);
主键索引:ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
唯一索引 :ALTER TABLE 表名 ADD UNIQUE ( 字段名);
全文索引 : ALTER TABLE 表名 ADD FULLTEXT ( 字段名);或create FULLTEXT index full_name on multi(mul_name);
多列索引:ALTER TABLE 表名 ADD INDEX index_name (字段1, 字段2, 字段3 );或create index feiyu on multi(mul_id,mul_name,mul_pwd);
(1)B-Tree索引
Btree
是一种平衡的m-way
查找树,它可以利用多个分支节点(子树节点)来减少查询数据时所经历的节点数,从而达到节省存取时间的目的。
(2)Hash索引
哈希索引包含以数组形式组织的 Bucket 集合。 哈希函数将索引键映射到哈希索引中对应的 Bucket。
(3)空间(R-Tree)索引
MyISAM支持空间索引,主要用于地理空间数据类型,例如GEOMETRY。
(4)全文(Full-text)索引
全文索引是MyISAM的一个特殊索引类型,主要用于全文检索。
- mysql的数据库索引---------第一章
- Mysql数据库的索引
- mysql 数据库的索引
- MySQL/ 第一章 MySQL数据库
- 深入MySQL数据库的索引
- 深入MySQL数据库的索引
- Mysql数据库的索引分析
- MySQL数据库的索引实现
- Mysql数据库的索引原理
- 深入MySQL数据库的索引
- MySQL数据库的索引实现
- MySql数据库索引的学习
- MySQL数据库的索引原理
- Mysql数据库的索引原理
- Mysql数据库的索引原理
- Mysql数据库的索引原理
- mysql数据库索引的介绍
- mysql数据库索引的科普
- 个人理解tensor或多维数组的最佳方式
- Ubuntu 16.04配置Shadowsocks和Privoxy实现浏览器和终端代理
- 性能测试笔记--自己总结
- removeNthFromEnd
- 关于ajax 拦截器的问题
- mysql的数据库索引---------第一章
- 通过SQL语句设置或删除主键
- Divisibility
- 1004 Packets
- org.apache.jasper.JasperException: Unable to compile class for JSP 解决方法
- Linux服务器--两种高效的并发模式(半同步/半异步模式、领导者/追随者模式)
- android上传图片过大处理
- 手把手教你一小时搭建个人网站
- Linux系统ftp文件服务器的安装