mysql索引
索引优化mysql
1.什么是索引?
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。sql
2.做用是什么?
索引的做用至关于图书的目录,能够根据目录中的页码快速找到所需的内容,提升性能(查询速度)。数据库
3.如何设置索引?
create [unique] index 索引名
on 表名称 (字段名[(长度)]);
//unique 惟一性 不容许具备索引值相同的行,从而禁止重复的索引或键值
4.删除索引
drop index 索引名 on 表名称;性能
5.索引和普通查询的区别?优化
好比,查询一个学校全部学生的成绩,将不及格的学生姓名和成绩显示下来。spa
普通查询方法:
select name,[成绩字段] from [表名] where [成绩字段]<60;排序
查询的过程:
数据库将全部学生的成绩所有查询一遍,将不及格的学生显示出来。
数据量小看不出区别,若是数据量达到百万,须要将全部学成所有查出,耗时很是大。索引
索引查询:
首先创建一个索引,create index 索引名 on 表名(成绩字段); 若是数据多,建立索引时会消耗大量时间,和内存。
再次查询select name,(成绩字段) from (表名) where 成绩字段<60;内存
查询过程:
索引将表中的数据排序,查询时列表有成绩10,30,60,70,100。
查询时,查到60的时候,将再也不向后查询。节省时间。class
普通索引(INDEX),主键索引(PRIMARY),全文索引()和惟一索引(UNIQUE)有什么区别?
惟一性索引:这种索引和“普通索引”基本相同,但有一个区别:索引列的全部值都只能出现一次,即必须惟一
补充:
索引是如何排序的?
数字索引:默认升序排序
文字索引:根据ASCII,汉字的机内码(不懂的问度娘)
多列索引:
查询条件是两条,多列索引比单列索引
建立索引:
1.常常须要搜索的列上,能够加快搜索的速度;
2.做为主键的列上,强制该列的惟一性和组织表中数据的排列结构;
3.常常用在链接的列上,这些列主要是一些外键,能够加快链接的速度;
4.常常须要根据范围进行搜索的列上建立索引,由于索引已经排序,其指定的范围是连续的;
5.常常须要排序的列上创 建索引,由于索引已经排序,这样查询能够利用索引的排序,加快排序查询时间;
6.常常使用在WHERE子句中的列上面建立索引,加快条件的判断速度。
索引的优缺点?
优势:
1.经过建立惟一性索引,能够保证数据库表中每一行数据的惟一性。
2.能够大大加快数据的检索速度,这也是建立索引的最主要的缘由。
3.能够加速表和表之间的链接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,一样能够显著减小查询中分组和排序的时间。
5.经过使用索引,能够在查询的过程当中,使用优化隐藏器,提升系统的性能。
缺点:
1.建立索引和维护索引要耗费时间,这种时间随着数据量的增长而增长。
2.索引须要占物理空间,除了数据表占数据空间以外,每个索引还要占必定的物理空间,若是要创建汇集索引那么须要的空间就会更大。
3.当对表中的数据进行增长、删除和修改的时候,索引也要动态的维护,这样就下降了数据的维护速度。
由于索引很是占内存,因此索引也须要谨慎添加,那些字段须要索引。