1.什么是索引?
一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。
2.为什么要有索引呢?
索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能
非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。
索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。
索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。
======================================语法===========================================================
概述:总的来说就两种创建索引的方式
【1】索引创建
方式一:CREATE INDEX 索引名
ON table_name (属性名 ASC|DESC)
);
方式二:ALTER TABLE table_name
ADD INDEX|KEY 索引名 (属性名 ASC|DESC);
注意:“ASC”参数用来指定升序排序,“DESC”用来指定降序排序。
【2】索引查看
<2-1>SHOW CREATE TABLE table_name;
结果:
<2-2>校验数据库某表中索引是否被使用
EXPLAIN
SELECT * FROM table_name WHERE 属性名;
结果:
<2-3>使用索引查找数据信息
SELECT * FROM stu_info WHERE name='WENHEWEN';
结果:
【3】创建唯一索引(UNIQUE)
方式一:CREATE UNIQUE INDEX 索引名
ON table_name (属性名);
方式二:ALTER TABLE table_name
ADD UNIQUE INDEX|KEY 索引名(属性名);
【4】创建全文索引(FULLTEXT)
方式一:CREATE FULLTEXT INDEX 索引名
ON table_name (属性名);
方式二:ALTER TABLE table_name
ADD FULLTEXT INDEX 索引名 (属性名);
功能:全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用「分词技术「等多种算法智能分析出文本文字中关键字词的频率及重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。
【5】创建多列索引
方式一:CREATE INDEX 索引名
ON table_name(属性名1,属性名2,.....属性名n);
方式二:ALTER TABLE table_name
ADD INDEX 索引名(属性名1,属性名2,.....属性名n);
注意:当查询条件有多个字段时,单列索引和多列索引有很大的区别。如果使用多列索引,where条件中字段的顺序非常重要,需要满足最左前缀列。最左前缀:查询条件中的所有字段需要从左边起按顺序出现在多列索引中,查询条件的字段数要小于等于多列索引的字段数,中间字段不能存在范围查询的字段(
【6】删除索引
DROP INDEX 索引名
ON table_name;