好吧,如果你的數據是時間範圍,你可以使用範圍分區
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT NOT NULL,
store_id INT NOT NULL
)
PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (6),
PARTITION p1 VALUES LESS THAN (11),
PARTITION p2 VALUES LESS THAN (16),
PARTITION p3 VALUES LESS THAN (21)
);
或列表 - 分區了「買家」
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY LIST(store_id) (
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20),
PARTITION pWest VALUES IN (4,12,13,14,18),
PARTITION pCentral VALUES IN (7,8,15,16)
);
多少條記錄,你要顯示 – rohitr 2014-09-04 11:56:49
多少行這會返回嗎?你嘗試了什麼索引(一個關於usertype,狀態應該有所幫助)?你可以展示一個查詢計劃嗎? – Thilo 2014-09-04 11:56:53
即使沒有索引,在一百萬行的單個表上這樣的簡單查詢也不應該花費「小時」。你誇大了嗎?或者有可能'用戶'真的是一個視圖或有很長的文本/ blob列? – 2014-09-04 12:00:00