赞
踩
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
索引一般加在查询语句的where条件所需的字段上,方便快速查询。
一个表可以创建多个字段不同的索引。
创建语句:
create index table_index_name on table_name (column1,column2);
表中已有数据且数据量大的时候可以开启多线程创建索引,
- --开启16个线程给table_name 表在column1,column2两个字段上创建索引table_index_name
- create index table_index_name on table_name (column1,column2) nologging parallel 16;
创建完成后,再执行查询语句,速度就会快很多。
查看是否使用索引:explain
在执行查询语句的时候如果要看是否启用了索引查询的话,在查询语句前加上explain关键字。
sql窗口下,在执行时按F5也可以查看使用到的索引。
如果KEY字段的值等于我们定义的索引名字,标识该查询用到了这个索引。
是否充分使用了索引:key_len算法
从上一步骤的查看索引中执行的结果里有一个key_len字段。
字段本身的长度 eg:varchar(50)
字段字符类型 varchar+2,char+0
字段是否为null:null+1 ,非空+0
字段字符集:utf-8(存纯文字内容,占用3个字节)
根据以上规则计算出来字段的key_len,对比结果,可以找出索引究竟哪些字段确实使用了。
50*3+2=152,key_len=152,则索引使用了这个varchar(50)字段
优化策略一:范围条件放最后
索引如果用到了范围条件(如时间范围的><),应该吧这个字段放到索引定义的最后边。
优化策略二:最佳左前缀原则
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。