2013-01-01 18 views
8

Zeilen aus Partition auszuwählen ich meine 300MB Tabelle Partition nicht durchgeführt und versucht, mit diesem Befehl SELECT-Abfrage von p0 Partition zu machenWie in MySQL

SELECT * FROM employees PARTITION (p0); 

Aber ich bin immer folgende Fehler

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near '(p0)' at line 1 

Wie schreibe Select-Abfrage, um Daten von bestimmten Partition zu erhalten?

+1

Überprüfen Sie diesen Eintrag: http://dba.stackexchange.com/questions/23138/unable Wählen Sie die-Datensätze-aus-spezifischen-Partition-in-Mysql. Es wird nicht unterstützt. – bonCodigo

+1

Warum brauchen Sie dieses Konstrukt? Kann man nicht einfach eine WHERE-Klausel hinzufügen, die p0 trifft? –

Antwort

10

Abhängig von Ihnen MySql Version, PARTITION Schlüsselwort existiert nicht bis MySQL 5.6.2. Sie würden MySQL 5.5 oder sogar 5.1, aber nicht 5.6 verwenden. In Fall werden Sie MySQL 5.1 verwenden, dann können Sie einige Abhilfe wie unter

SELECT partition, count(ID) 
FROM 
(
    SELECT ID, 
     case when condition then p1 
      when condition then p2 
     ..... 
     end as partition 

    FROM 
     table 
) s1 
GROUP BY partition 

Hinweis tun: Die obige Lösung ist Umgehung nur Sie Ausgang wünschen, zu erhalten.

Sie können auch versuchen, diese Abfrage für Ihre Partition Gesamtanzahl der Zeilen zu zählen.

SELECT table_rows as 'count(*)' FROM information_schema.partitions WHERE table_schema = schema() and table_name ='employees' and partition_name = 'p0'; 

Hinweis: können Sie table_schema = schema()-table_schema = 'yourschema'

ändern
+0

Danke dir, es funktioniert – Kad

+0

Ich werde, auf das Mindestpensum warten. – Kad

+0

ok kein Problem, nur nicht vergessen, zu akzeptieren, andere werden den Nutzen – Ravi

2

Sie haben Recht, explizite Auswahl von PARTITION nicht in 5.1.54 Version unterstützt. Siehe this post

1

nicht sicher, warum meine Antwort in einen Kommentar umgewandelt wurde;)

es zurück Putting. Überprüfen Sie diese question on DBA. Es wird nicht in der aktuellen Version von MYSQL unterstützt.

Sie auch Syntax seit MySQL 5.6 die unterstützten

+1

überprüft, weil Sie eine kurze Antwort geschrieben haben. – Ravi

+0

Infact der asnwer wurde geschrieben, bevor ich es abgeschlossen habe;) danke trotzdem. – bonCodigo

6

Eigentlich article dev überprüfen MYSQL kann, ist:

SELECT * FROM table PARTITION (partitionName);