是否有任何缺点会阻止您向表列添加索引?

时间:2014-02-12 18:46:55

标签: sql database

我在过去两周内遇到过两次问题:我必须查询一个庞大的数据库,根据非数字字段查找一些条目。问题是这些字段没有索引,所以,我的查询需要大约40分钟来查找结果(因为我限制它只获得前20个)。

当我问我的同事为什么没有该字段的索引时,他们说没有办法猜测先验哪些字段需要索引,因此,没有创建索引。

当我让他们为我创建一个新索引时,他们说这不能在生产中完成,他们必须创建一个测试环境,创建索引,看看它的行为方式,然后才将其投入生产。这被认为是太多的工作,没有成功,所以,我仍然被卡住了。

我不是数据库专家,但据我所知,新索引只会影响dabatase的大小,没有别的。我错了吗?

换句话说:为什么我在每个可能是过滤或排序因子的列上创建索引?为什么我不能将索引添加到生产数据库?

3 个答案:

答案 0 :(得分:2)

您的同事不允许您在生产数据库上添加索引的原因之一是因为添加索引会产生成本。分析大表上的索引需要花费大量时间。

然而,正如您已经发出信号,该索引带来了很多好处,所以我认为您不应该担心rdbms分析表所花费的时间。无论您的同事说什么,在可搜索和/或可加入的列上添加索引几乎总是建议的做法。

答案 1 :(得分:1)

从技术上讲,添加索引可以减慢对表的更新,或更改执行计划,或在创建索引时增加开销。实际上,虽然一个简单的指数会产生很大的影响是值得怀疑的。你处理的是政治问题,而不是技术问题。

答案 2 :(得分:0)

向生产数据库添加索引的其他缺点是在创建数据库时锁定数据库(因此没有新的插入)和更长的插入/更新 - 每次更改数据时,每个索引都需要更新。

也许一次性分析查询不值得停机?