添加索引+执行查询比执行没有索引的查询更快

时间:2013-10-20 05:07:17

标签: mysql sql database indexing

因此,有时当我进行SQL查询时,我发现在没有正确索引的情况下执行一次可能需要60秒,但是创建索引需要5秒钟,运行查询并删除索引。

我的问题是......是否有技术原因导致MySQL不这样做?

2 个答案:

答案 0 :(得分:1)

在庞大的数据库(太字节+)上,创建索引并删除它可能需要很长时间。

此外,它可能无法猜测创建索引的正确方法,并且实际上使查询变慢。

答案 1 :(得分:0)

如果你想要这个,你需要自己创建索引,因为DB不知道需要索引什么。因此,如果它可以提高您的数据库性能,您可以将其编入索引,但是如果您在查询后需要删除索引的方式进行索引,那么这是错误设计的。但如果真的有帮助你可以做到这一点。


但是,根据数据库大小的不同查询的执行时间会有所不同。所以你可能会遇到这种情况,你的数据库增长很多,索引和删除索引的方式比通常的慢。


更重要的是,如果在查询后删除索引,这可能意味着这些索引会使其他查询工作变慢,不同的查询需要不同的索引,因此您可能遇到某种竞争情况。您将同时收到一些查询,并且所有查询都会互相干扰,所有结果都会以通常的方式更糟糕。


总而言之,在采取一些全球性的应用解决方案之前,您必须进行大量的测试,并且这些测试将尽可能与实际使用类似。这意味着您必须创建尽可能多的数据,尝试模拟尽可能多的登录用户。在这种测试之后,决定是否值得接受或更好地使用一些全球已知的方法。