抱歉,如果这是一个愚蠢的问题,但这是一个新问题,所以需要一些帮助来理解一些事情。我目前正在将 mysql 升级到 5.1,因此我可以在 mysql 中使用分区。我的问题是,如果我对表进行分区,分区表(包括修剪过程)是否仍会使用连接进行查询,或者如果您只是查询具有分区的表,分区是否是最佳的?
编辑
这是一个示例查询:
SELECT event.*,site.* FROM event INNER JOIN site ON event.siteid = site.id
WHERE event.eventdate >= [somedate] AND event.eventdate <= [somedate]
AND event.siteid = [siteid]
而且我使用事件日期字段在事件表上设置了分区。 mysql 是否仍然能够使用事件表上的分区,包括修剪过程?
最佳答案
分区表可用于连接。
调整 where
子句以仅包含一个分区以获得最佳性能。
例如如果按年分区,则可以像这样进行连接:
select * from a
inner join partioned_table p on (p.id = a.id)
where p.year = '2011';
此查询可以使用和不使用 where 子句,但使用 where 子句会更快,因为您只访问一个分区。
如果访问更多分区,MySQL 必须使用临时表将分区拼接在一起才能进行连接。
这种破坏了分区的目的。
关于Mysql分区和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443588/