首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分区和子选择

问分区和子选择
EN

Stack Overflow用户
提问于 2011-04-03 10:08:49
回答 1查看 486关注 0票数 0

我对分区和子查询(MySQL5.1)有问题。确切地说,当我使用子select执行select时,mysql跳过分区。我不明白为什么。确切地说,我有一个这样的分区表:

代码语言:javascript
复制
CREATE TABLE parted_table (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(20)
) PARTITION BY KEY() PARTITIONS 20;

查询如下:

代码语言:javascript
复制
select * from parted_table where id in (select col_fk from other_table);

explain partitions显示,上面的select使用所有20个分区,即使这个子select只返回一个值。是因为mysql在优化查询时不知道子subselect的结果集吗?

在给定的示例中,我应该做什么来获得分区?

编辑:,考虑到这个问题,我发现了一个错误(http://bugs.mysql.com/bug.php?id=22765)。它是在2008年修复的,但在MySQL6.0中是固定的:(我读到很多魔法都是从MySQL6.0移到MySQL5.5的。目前,我正试图确认这个特定的修复程序是否包含在ver中。5.5。

EN

回答 1

Stack Overflow用户

发布于 2011-04-03 20:30:48

如果子查询只返回一行,则可以使用常规联接。查询将从other_table驱动到parted_table。

代码语言:javascript
复制
select *
  from other_table
  join parted_table on(parted_table.id = other_table.col_fk);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5528920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档