1

因此,有时当我执行 SQL 查询时,我发现在没有适当索引的情况下可能需要 60 秒,但创建索引、运行查询和删除索引可能需要 5 秒。

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

4

2 回答 2

1

在一个巨大的数据库(TB+)上,创建索引和删除它可能需要很长时间。

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

于 2013-10-20T05:10:19.543 回答
0

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


但是,不同查询的执行时间取决于数据库大小。因此,您可能会遇到这种情况,您的数据库增长得非常快,而您的索引和删除索引的方式比通常的方式要慢。


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


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

于 2013-10-20T06:06:57.307 回答