我是数据库编程的新手,我想知道索引的负面影响是什么?据我了解,索引加快了必须在数据库中搜索特定值(例如SELECT)的操作。
考虑以下示例:
对于table Example(在column上具有索引)user_name,操作:
Example
user_name
SELECT TestField FROM Example WHERE user_name=XXXX
作为索引的结果将更快。
我的问题是:使用索引有什么弊端?如果索引只是给我们带来好处(提高性能),为什么不将它们设置为默认值呢?
好吧,您可能可以填写有关索引的书,但总之,在创建索引时,这里需要考虑以下几点:
尽管它(主要)加快了选择的速度,但它却减慢了插入,更新和删除的速度,因为数据库引擎不必只写数据,也可以写索引。索引需要RAM中硬盘上的空间(并且更重要)。无法保存在RAM中的索引几乎没有用。仅有几个不同值的列上的索引不会加快选择的速度,因为它不能对很多行进行排序(例如,“ gender”列,通常只有两个不同的值-男性,女性)。
例如,如果您使用MySQL,则可以检查引擎是否通过在选择之前添加“ explain”来使用索引-对于上述示例 EXPLAIN SELECTTestField FROM Example WHERE username=XXXX
EXPLAIN SELECTTestField FROM Example WHERE username=XXXX