2010-06-01 470 views
0

我有一個數百萬行的表,我想創建一些部分,但我真的不知道我怎麼能做到這一點。我的意思是我想讓以ID 1 - > 10000開頭的數據位於分區1上,而以ID 10001 - > 20000開始的數據位於分區2上。等等...?你能給我一個例子怎麼做嗎?我怎樣才能做到這一點與MySQL分區

我在互聯網上搜索了很多,我讀了很多文檔,但我仍然不明白它需要做什麼!

最好的問候,

+1

你能解釋一下在http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html中究竟不清楚嗎? – Unreason 2010-06-01 11:00:28

+0

那麼它表明我必須創建一個表才能做到這一點,但我已經把表格...與其中的數據 – Uffo 2010-06-01 11:07:34

+1

有人懶惰可以點擊幾個鏈接,找到**另一個**手冊頁面:http://dev.mysql.com/doc/refman/5.1/en/partitioning-management-range-list.html :) – 2010-06-01 11:35:21

回答

1

這是你會如何開始使用分區:

ALTER TABLE table_with_millions_of_rows 
PARTITION BY RANGE (id) (
    PARTITION p0 VALUES LESS THAN (10000), 
    PARTITION p1 VALUES LESS THAN (20000), 
    PARTITION p2 VALUES LESS THAN MAXVALUE 
) 

如何管理的進一步信息(創建,刪除,更改設置等)的分區,可以發現在MySQL手冊的「Partitioning」一章中。

注意:MySQL中的分區可用於版本5.1。

+0

我得到這個錯誤 #1064 - 你的SQL語法錯誤;請檢查對應於您的MySQL服務器版本的手冊,以便在'PARTITION BY RANGE(id)(PARTITION p0值小於(10000),PARTI'在第2行 – Uffo 2010-06-01 12:50:19

+0

@Uffo附近使用正確的語法,您正在使用哪個MySQL版本? – 2010-06-01 12:59:51

+0

服務器版本:5.0.90-community-log #MySQL客戶端版本:4.1.22 – Uffo 2010-06-01 13:02:14

0
CREATE TABLE part1 (...) 
CREATE TABLE part2 (...) 
INSERT INTO part1 SELECT * FROM original WHERE id => 0 AND id < 10000 
INSERT INTO part2 SELECT * FROM original WHERE id => 10000 AND id < 20000 
+0

呵呵?多數民衆贊成在修剪...這只是分裂的東西了...我需要做的與Mysql分區... – Uffo 2010-06-01 11:29:24

+0

你是對的,我誤解了這個問題。 – Sjoerd 2010-06-02 07:24:54

相關問題