我有一个表,它包含大约5000万行,每个分区有500万行进行了分区。我手动将其划分为Table_1、Table_2、Table_3等,没有使用MySql的内置分区特性(使用分区关键字),因为在对表进行分区时我不知道这个特性。
很多时候,我必须检索价值1000万的行,这意味着我必须查询两个分区的数据。
从一个表中检索整个数据(500万行)可能需要2-10秒,这是相当慢的。虽然在最初的查询之后,相同的查询非常快(几百毫秒)。
在我的情况下,使用内置的MySql分区功能来划分我的表(S)是否有助于更快地查询?
发布于 2019-02-02 12:47:44
运行相同的查询两次。他们第二次跑得更快吗?猜猜看。数据第一次放在磁盘上,必须从磁盘中取出。第二次,这一切都坐在RAM里。差别可能是10倍。
你为什么要一次取五百万行?而且,如果你把5000万行分割成10个‘分区’,为什么那5M行是相关的呢?你可能需要不同的数据片段吗?
无论是手动分区还是使用PARTITION分区,都很少为实际任务提供任何性能好处。
如果您经常需要获取10M行,那么让我们讨论避免获取那么多行的方法,但仍然得到相同的答案。使用摘要表是数据仓库中的一种常见技术。
提供更多的细节,我会更详细地解释为什么我要对你的问题泼冷水。
https://dba.stackexchange.com/questions/228749
复制相似问题