2010-04-21 73 views
2

只是想验证数据库分区只有在数据库级实现,当我们查询一个分区表,我们还是做我们的正常查询,没有什么特别的与我们的查询,被自动解析查询时进行优化,那是对的吗?MySQL分区

例如我们有一个名为“地址”的表,其中有一个名为“country_code”和“city”的列。所以,如果我想在纽约,美国所有的地址,一般我咬咬牙做这样的事情:

select * from address where country_code = 'US' and city = 'New York' 

如果现在的表是通过“COUNTRY_CODE”分区,我知道,现在的查询只将在包含country_code = US的分区上执行。我的问题是我是否需要显式指定要在我的sql语句中查询的分区?或者我仍然使用前面的语句,数据库服务器会自动优化它?

提前致谢!

回答

1

分区对于您编写的任何查询都是透明的。没有必要指定要查询的分区。

数据库只是使用分区下,以优化和相应减少的理想,需要通过基于搜索你的where子句中的数据或索引的数量。

4

贾罗德的答案是正确的,充分回答这个问题,但我觉得有缺失的重要棋子。

如果您的查询不包括在分区列过滤条件,你可能会看到比你会在同样大小的未分区表的性能差。

如果你改变了你的查询,只是在城市进行筛选,它不会使用,只有美国分区,将不是反对一样又未分区表的查询表现较差。

唯一的其他地方分区可以帮助查询与同一分区键加入到一个分区表的时候。通常这种连接可以很容易并行化。假设这不是你在做什么。