2017-12-21 6 views
0

Warum zeigt phpMyAdmin eine leere Kardinalität? enter image description hereMysql phpmyadmin zeigen leere Kardinalität

Wenn ich den Index (ohne Änderung irgendetwas) bearbeiten und speichern, werden die Mächtigkeit erscheinen, aber nach einer TRUNCATE und einigen Einfügungen, die Mächtigkeit wieder leer werden.

Lauf

ALTER TABLE tableName ENABLE KEYS 

hilft nicht.

Wie wird die Kardinalität immer angezeigt?

Edit:

Die phpMyAdmin-Version ist 4.6.4

Die MySQL-Version ist libmysql - mysqlnd 5.0.12-dev - 20150407

Der Motor ist MyISAM

+0

Warum machst du 'TRUNCATE'? Es wird selten benötigt. –

+0

Warum kümmert es dich, wenn die Kardinalität weggeht? –

+0

@RickJames, weil ich nehme an, dass, wenn es NULL ist, der Index nicht richtig funktioniert, um die Auswahlen der Tabelle zu beschleunigen. Ist das nicht wahr? – user2342558

Antwort

1

Sie muss analyze the table.

Die Statistiken für den Primärschlüssel werden aktualisiert, wenn die Daten aktualisiert werden, aber die anderen Indizes benötigen diese Operation, um einen Wert festzulegen. Beachten Sie, dass Sie die Indizes nicht aktualisieren müssen, wenn sich die Verteilung der Daten nicht ändert.

Beachten Sie, dass es bei großen Tabellen zu Leistungseinbußen (und Sperren von Auswirkungen mit MyISAM) kommt, wenn Sie dies ausführen.

+0

Also muss ich das jedes Mal ausführen, wenn das Skript die INSERTs beendet? Ich brauche eine definitive Lösung. – user2342558

+0

Nein. Sie führen es aus, wenn die relative Kardinalität ausreichend verzerrt ist, um zu erzwingen, dass das Optimierungsprogramm fehlerhafte Ausführungspläne generiert. (Hinweis: Es ist unwahrscheinlich, dass es die Leistung beeinträchtigt, bis Sie mehr als hundert Mal mehr Daten als oben gezeigt haben) – symcbean

+0

Es funktioniert, aber ich muss es nach jedem Datenimport ausführen :-(Ohne andere Alternativen werde ich das tun. – user2342558

0

Aha - ich fand NULL mit SHOW INDEXES auf einer MyISAM-Tabelle. Ist deins ENGINE=MyISAM? Empfehlen Sie den Wechsel zu InnoDB.

+0

Ich habe die Frage mit diesen Informationen aktualisiert. – user2342558

+0

Jede andere Lösung? Ich kann ' t den Motor wechseln. – user2342558