2010-06-01 7 views
0

J'ai une table avec des millions de lignes et je veux créer des parties, mais je ne sais vraiment pas comment je peux. Je veux dire que je veux avoir les données qui commencent avec l'ID 1 -> 10000 pour être sur la partition une, et et les données qui commencent avec l'ID 10001 -> 20000 pour être sur la partition deux; et ainsi de suite ... Pouvez-vous me donner un exemple comment le faire?Comment puis-je faire cela avec des partitions MySQL

J'ai beaucoup cherché sur Internet et j'ai lu beaucoup de documentation, mais je ne comprends toujours pas comment cela doit être fait!

Cordialement,

+1

Pourriez-vous expliquer ce qui n'est pas clair dans http://dev.mysql.com/doc/refman/5.1/fr/partitioning-range.html? – Unreason

+0

Eh bien, il montre que je dois créer une table pour faire cela, mais j'ai déjà la table ... avec les données – Uffo

+1

Quelqu'un de moins paresseux pourrait cliquer sur un couple de liens et trouver ** un autre ** manuel page: http://dev.mysql.com/doc/refman/5.1/en/partitioning-management-range-list.html :) –

Répondre

1

Voici comment vous pouvez commencer à utiliser des partitions:

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 
) 

Pour plus d'informations sur la façon de gérer (créer, supprimer, modifier les paramètres, etc.) partitions peuvent être trouvées dans le chapitre "Partitioning" du manuel MySQL.

Remarque: le partitionnement dans MySQL est disponible depuis la version 5.1.

+0

Je reçois cette erreur # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'PARTITION PAR RANGE (id) (PARTITION p0 VALUES MOINS DE (10000), PARTI' à la ligne 2 – Uffo

+0

@Uffo, quelle version de MySQL utilisez-vous? –

+0

Version du serveur: 5.0.90-community-log # Version du client MySQL: 4.1.22 – Uffo

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

hein? ce n'est pas l'élagage ... c'est juste scinder les choses ... j'ai besoin de faire ça avec la partition Mysql ... – Uffo

+0

Vous avez raison, j'ai mal compris la question. – Sjoerd