MySql高级优化——索引
2018-01-14 13:34
316 查看
[b]一、索引是什么[/b]
Mysql官方对索引的定义是:索引(Index) 是帮助Mysql高效获取数据的数据结构。
即:索引是数据结构。
数据本身之外,数据库还维护着一个满足特地查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结的基础上实现高级查找算法,这种数据结构就是索引。
一般来说索引本身也很大,不可能全部储存在内存中,因此索引往往以索引文件的形式储存在磁盘上,我们平常所说的索引,若无特别指出,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚焦索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,当然除了B+树这种类型的索引之外,还有哈希索引(hash
index)等。
二、优势和劣势
优势:1. 类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本。
2. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。
劣势:1、索引列需占空间。
2、会降低更新表的速度。
3、需对大数据量的表进行索引优化。
三、索引分类
1、单值索引(简单索引):即一个索引只包含单个列,一个表中可以有多个单列索引。
2、唯一索引:索引列的值必须唯一,但允许有空值。
3、复合索引:即一个索引包含多个列
4、查看和删除索引:
四、哪些情况需要创建索引
五、哪些情况不需要创建索引
六、常见瓶颈
CPU : CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据的时候。
IO :磁盘IO瓶颈发生在装入数据远大于内存容量的时候。
服务器硬件的性能瓶颈:top,free,iostart和vmstat来看系统性能状态。
THE END
Mysql官方对索引的定义是:索引(Index) 是帮助Mysql高效获取数据的数据结构。
即:索引是数据结构。
数据本身之外,数据库还维护着一个满足特地查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结的基础上实现高级查找算法,这种数据结构就是索引。
一般来说索引本身也很大,不可能全部储存在内存中,因此索引往往以索引文件的形式储存在磁盘上,我们平常所说的索引,若无特别指出,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚焦索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,当然除了B+树这种类型的索引之外,还有哈希索引(hash
index)等。
二、优势和劣势
优势:1. 类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本。
2. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。
劣势:1、索引列需占空间。
2、会降低更新表的速度。
3、需对大数据量的表进行索引优化。
三、索引分类
1、单值索引(简单索引):即一个索引只包含单个列,一个表中可以有多个单列索引。
方式一: ALTER TABLE 'table_name' ADD INDEX index_name('column')
方式二:CREATE INDEX index_name ON table_name('column')
2、唯一索引:索引列的值必须唯一,但允许有空值。
方式一:ALTER TABLE 'table_name' ADD UNIQUE INDEX `index_name`(column)
方式二:CREATE UNIQUE INDEX 索引名称 ON 表名称(列名称)
3、复合索引:即一个索引包含多个列
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
CREATE UNIQUE INDEX index_name ON `table_name`(`column1`,`column2`)
4、查看和删除索引:
SHOW INDEX FROM `table_name`;
DROP INDEX index_name ON `table_name`;
四、哪些情况需要创建索引
五、哪些情况不需要创建索引
六、常见瓶颈
CPU : CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据的时候。
IO :磁盘IO瓶颈发生在装入数据远大于内存容量的时候。
服务器硬件的性能瓶颈:top,free,iostart和vmstat来看系统性能状态。
THE END
相关文章推荐
- MySQL高级知识-查询与索引优化分析
- mysql高级----索引优化(一):索引分析
- Mysql高级索引优化案例----两表(八)
- MySQL高级开发(四)---索引优化分析(MySQL执行计划解析)
- mysql高级----索引优化(二):索引失效案例(应该避免)
- Mysql高级索引优化案例----单表(七)
- MySQL高级 之 索引失效与优化详解
- Mysql高级索引优化案例----三表(九)
- MySQL高级开发(六)--索引优化总结(优化口诀)
- MySQL高级 之 索引失效与优化详解
- mysql高级包含索引建立优化_函数_存储过程_触发器_及游标
- MySQL高级第二章——索引优化分析
- MySQL高级知识-查询与索引优化分析
- MySQL高级索引优化分析
- MySQL高级十三——通过索引优化SQL
- MySQL索引原理及慢查询优化
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- mysql性能优化-慢查询分析、优化索引和配置
- MySQL 优化之 MRR (Multi-Range Read:二级索引合并回表)
- PHP特级课视频教程_第十八集 MySQL索引优化_李强强