0
我對MySQL中的分區和連接表有疑問。 我有這個示例模式:Mysql:連接表中的性能分區
CREATE TABLE A (
`ID` BIGINT NOT NULL AUTO_INCREMENT,
`NAME` varchar(50) DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `IDX_A_NAME` (`NAME`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE B (
`ID` BIGINT NOT NULL AUTO_INCREMENT,
`VALUE` double(22,6) DEFAULT NULL,
`A_REF` BIGINT DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `IDX_A_REF` (`A_REF`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(A_REF) (
PARTITION p1000 VALUES LESS THAN (1000),
PARTITION p2000 VALUES LESS THAN (2000),
PARTITION p3000 VALUES LESS THAN (3000),
PARTITION future VALUES LESS THAN MAXVALUE
);
在B分區表的增長每月約3米榮行。 通過A_REF場分區標準是原因是b表正在用類似下面的查詢訪問(現在,這是不能改變的):
SELECT B.VALUE
FROM A
INNER JOIN B ON A.ID = B.A_REF
WHERE A.NAME = 'James'
所以,我的問題是
- 當執行EXPLAIN PARTITIONS ...使用此查詢,所有分區都在EXPLAIN輸出中進行訪問。這是否意味着在執行過程中所有分區都是實際上是?或者它只是分區信息?
- 它有助於分區標準是JOIN字段嗎?
- 分區幫助在我的例子中?
- 是否有任何其他方法(另一個分區標準等)有助於訪問較少的行數或查詢執行速度更快?
我很擔心執行這個查詢一年4000萬行的查詢。所以,任何幫助都非常感激。
感謝您的解釋。我不能將你的答案標記爲最終答案,但它是有幫助的,對我來說這一切都很重要。那謝謝啦。 – 2015-06-16 06:00:11