我正在使用mysql数据库上的新表编写一个新特性。索引列(我将用于 WHERE 在 SELECT 查询)还是应该等到表达到相当大的大小后再开始索引?
WHERE
SELECT
fnvucqvd1#
来自此相关帖子:比你需要的多一个索引太多了。少一个太少了。我尝试过搜索一个案例,其中索引太多是一个问题,但实际上找不到任何东西如果插入速度太慢,并且用于读取的索引速度不够快,无法弥补插入速度过快的缺点,那么您就知道插入的内容太多了。
hec6srdp2#
当您插入、更新、删除表时,索引也需要更新。请参阅这篇关于索引的文章
olhwl3o23#
如果最终需要索引,不妨使用表创建索引。这在一定程度上减缓了插入的速度,但是如果您需要它们,它们也可以在那里。如果你知道正确的答案,为什么还要等待缓慢的查询呢?反对立即将它们放入的一个理由是,实际的查询是否会通知索引策略。你似乎很清楚它的用法。一定要认识到索引使一些操作变得很快(尤其是 select s) 是的。但是,它们会使其他操作变慢(特别是, insert , update ,和 delete ). 出于这个原因,您应该考虑一下正在进行的索引。
select
insert
update
delete
cgvd09ve4#
是的,插入和更新可能会因为索引而变慢。然而,在我的实践中,这并不是一个常见的问题。您只想添加您知道需要的索引。在解决新问题时,请等待添加其他索引。有一件事需要考虑很多次:“如果”索引被遗忘了,而不是需要的,实际上会导致性能问题,很难追踪。在找到问题索引之后,开发人员必须花费额外的时间来确定在应用程序的其他部分中是否确实需要索引。在表达到一定大小之前等待添加索引。我会严重怀疑这是否会为你带来任何性能,如果是这样,我会质疑系统设计。
4条答案
按热度按时间fnvucqvd1#
来自此相关帖子:
比你需要的多一个索引太多了。少一个太少了。
我尝试过搜索一个案例,其中索引太多是一个问题,但实际上找不到任何东西
如果插入速度太慢,并且用于读取的索引速度不够快,无法弥补插入速度过快的缺点,那么您就知道插入的内容太多了。
hec6srdp2#
当您插入、更新、删除表时,索引也需要更新。
请参阅这篇关于索引的文章
olhwl3o23#
如果最终需要索引,不妨使用表创建索引。这在一定程度上减缓了插入的速度,但是如果您需要它们,它们也可以在那里。如果你知道正确的答案,为什么还要等待缓慢的查询呢?
反对立即将它们放入的一个理由是,实际的查询是否会通知索引策略。你似乎很清楚它的用法。
一定要认识到索引使一些操作变得很快(尤其是
select
s) 是的。但是,它们会使其他操作变慢(特别是,insert
,update
,和delete
). 出于这个原因,您应该考虑一下正在进行的索引。cgvd09ve4#
是的,插入和更新可能会因为索引而变慢。然而,在我的实践中,这并不是一个常见的问题。您只想添加您知道需要的索引。在解决新问题时,请等待添加其他索引。有一件事需要考虑很多次:“如果”索引被遗忘了,而不是需要的,实际上会导致性能问题,很难追踪。在找到问题索引之后,开发人员必须花费额外的时间来确定在应用程序的其他部分中是否确实需要索引。在表达到一定大小之前等待添加索引。我会严重怀疑这是否会为你带来任何性能,如果是这样,我会质疑系统设计。