假设我有两种情况,具有相同的数据量,例如一张包含 500 行的表。 首先,我使用一个查询来查询分区的 MySQL 表,然后将其余逻辑交给 MySQL 引擎来获取结果。
在第二种情况下,我创建 5 个表,最多 100 行。 然后,我以编程方式遍历这些表,直到找到记录,如下所示(伪代码):
fetchedData = query table1
if fetchedData == null
fetchedData = query table2
if fetchedData == null
...
fetchedData = query table5
我看到的主要缺点是我可能会查询数据库 5 次而不是 1 次,具体取决于记录存储在哪个表中。但由于查询更小、更有针对性,它们应该给我更快的响应时间。或者我应该把它留给 MySQL 分区?让我们忽略第二种情况的可维护性。
最佳答案
都不是。
500 行是微不足道的。即使 MySQL 可以并行处理事情,也无济于事。
使用合适的索引——通常会有很大帮助。
您的特定伪代码并不比使用末尾带有 LIMIT 1
的 MySQL 查询更好,以便在扫描所有内容之前停止查询。因此,我再说一遍“这两种分区都没有帮助”。
关于mysql - native MySQL 分区和基于后端的分区之间的性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866088/