数据库在什么时候使用索引??
什么时候【要】创建索引
(1)表经常进行 SELECT 操作
(2)表很大(记录超多),记录内容分布范围很广
(3)**列名经**常在 WHERE 子句或连接条件中出现
什么时候【不要】创建索引
(1)表经常进行 INSERT/UPDATE/DELETE 操作
(2)表很小(记录超少)
(3)列名不经常作为连接条件或出现在 WHERE 子句中
应该给哪些列建索引,哪些不建???
- 在最频繁使用的、用以缩小查询范围的字段上建立索引;
- 在频繁使用的、需要排序的字段上建立索引。
对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引;
索引是不是越多越好? no
当然索引也不是越多越好,索引也不是万能的,在有些情况下使用索引反而会让效率变低。
索引的价值是帮我们从海量数据中找到想要的数据,如果数据量少,那么是否使用索引对结果的影响并不大。
在数据表中的数据行数比较少的情况下,比如不到 1000 行,是不需要创建索引的。
当数据重复度大,比如高于 10% 的时候,也不需要对这个字段使用索引。
比如,如果是性别这个字段,就不需要对它创建索引。
这是为什么呢?如果你想要在 100 万行数据中查找其中的 50 万行(比如性别为男的数据),一旦创建了索引,你需要先访问 50 万次索引,然后再访问 50 万次数据表,这样加起来的开销比不使用索引可能还要大。
优缺点:
索引加快数据库的检索速度
索引降低了插入、删除、修改等维护任务的速度(虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引)