常见的索引有顺序文件上的索引,B+树索引,散列索引,位图索引。
顺序文件上的索引:针对按照指定属性值升序降序存储关系
B+树索引:具有动态平衡优点
散列索引:查找速度快
关系数据库管理系统在执行查询会自动选择合适的索引作为存取路径,用户不必也不能显示的选择索引
//建立索引
create INDEX index_name on emp(emp_id,dept_id);
//删除索引
drop index indexname;
1.如果是一个复合索引的话,在where 条件中使用索引的第一个字段索引生效,但是第二个字段以后的字段是无法使用索引的,但是如果用到第一个的同时or 另外一个也是没有用到索引的。like '%%'有用到索引
//建立索引
create INDEX index_name on emp(emp_id,dept_id);
//用到第一个的同时or 另外一个也是没有用到索引的。
EXPLAIN SELECT * from emp WHERE dept_id>3 or dept_id='3';
//下面这种也是用到索引
EXPLAIN SELECT * from emp WHERE dept_id>3 and ordept_id like '%7%';
//下面这样使用就是没有使用到索引的
EXPLAIN SELECT * from emp WHERE dept_id>3;
2.如果直接使用复合条件中的所有字段肯定是用了索引的
//用了索引
EXPLAIN SELECT * from emp WHERE dept_id>2 and emp_id<4;
3.但是如果除了使用索引字段中的所有字段以外额外又使用了其他没有定义的字段用到索引
//EXPLAIN SELECT * from emp WHERE dept_id>2 and emp_id<4 and age>10;
4.创建索引只有当where使用频繁才会使用,因为创建索引时会把这部分数据拷贝到一份到磁盘上会消耗很大空间