什么是索引
在关系型数据库中,数据存储在表中,而我们查询数据时需要遍历整张表,这将耗费大量时间,尤其在数据量庞大的情况下。索引是一种数据结构,它能够提高数据查询效率,从而使查询操作更加快速。索引可以看成是一张快速查找表,其中包括了表中关键字及它们对应的记录地址。
为什么要添加索引
如果在表中没有添加任何索引,在进行大量数据的查询操作时需要进行全表扫描,这样的操作将会消耗大量时间。因此,在表中添加合适的索引不仅能够提高查询效率,还能够加快数据插入、修改和删除等操作。
如何添加索引
在创建表时添加
创建表时,可以在某些列上添加索引。当列中的数据量大时,这些索引将大大提高查询效率。下面的代码演示了如何在创建表时添加索引:
CREATE TABLE employee
(
emp_id INT(10) NOT NULL,
emp_name VARCHAR(50) NOT NULL,
emp_salary INT(10) NOT NULL,
emp_dept VARCHAR(20) NOT NULL,
INDEX (emp_id, emp_salary)
);
在上述代码中,CREATE TABLE语句的最后一行索引emp_id列和emp_salary列,也可以单独为其中的一列添加索引。
使用ALTER TABLE语句添加
在创建表之后,可以使用ALTER TABLE语句添加索引。下面的代码演示了如何使用ALTER TABLE语句为表添加索引:
ALTER TABLE employee
ADD INDEX (emp_id, emp_salary);
在已经存在的索引上添加列
在已经存在的索引上添加列,需要使用ALTER TABLE语句和ADD INDEX子句,下面的代码演示了如何在已经存在的索引上添加列:
ALTER TABLE employee
ADD INDEX (emp_id, emp_salary, emp_dept);
如何选择索引列
选择哪些列添加索引,对查询性能有极大的影响。错误的选择会导致索引失效,造成查询效率低下。下面是一些选择索引列的建议:
选择区分度高的列作为索引列
这意味着索引列包含的不同值数量相对较多,这样可以帮助避免因索引中重复值过多而导致的索引失效问题。
经常被查询的列
如果某个列长期被用于查询和过滤操作,那么将它设置为索引列能够大幅度提 high 查询效率。
唯一性约束列
如果表中有唯一性约束,强烈建议将这些列设置为索引列。如此能够避免由重复值所引起的不正确的结果,并大幅提 high 查询效率。
不要选择过多列
在个别情况下,将所有查询列都设置为索引列会 speedup 查询效率,但是选择过多的列作为索引列,会增加索引互相之间的冲突,降低整个查询效率。
总结
索引可以大幅提 high 查询效率,缩短查询执行时间。添加索引需要选择合适的列,添加过少索引会导致效率提升较小,添加过多索引反会降低效率。