2017-07-30 4 views
0

Es gibt zwei Spalten in meiner Tabelle, "date" und "description", ich brauche das Ergebnis von Zeilen, die ein Wort in "description" enthalten und Reihenfolge nach Datum abnehmend, so ich hinzufügen fullindex and run „alter table order by date decreasing“ zuerst, dann unter sQL ausführen:Überarbeiten Sie die Reihenfolge der FTS in mysql 5.6 innodb Tabelle

SELECT date FROM articles WHERE MATCH (description) AGAINST ('+"big" +"light"' IN BOOLEAN MODE); 

, wenn die Tabelle MyISAM ist, ist das Ergebnis, um nach „Datum“ ab, aber wenn die Tabelle InnoDB ist, ist das Ergebnis automatisch Sortieren der Zeilen in der Reihenfolge abnehmende Relevanz.

Ich möchte InnoDB-Tabelle verwenden und die Ergebnisreihenfolge nach "Datum" automatisch verringern anstatt abnehmende Relevanz, wie kann ich tun?

Plus: fügen Sie den Code "Reihenfolge nach Datum desc" zu SQL ist praktikabel, aber es wird mehr Zeit kosten, weil meine Tabelle zu viele Tiefen haben.

Vielen Dank.

Tommy

+0

'alter table order by' ist ein" Feature "für MyISAM. Es funktioniert nicht für InnoDB. Die einzige Möglichkeit, etwas Ähnliches zu erhalten, wäre die Verwendung von "Datum" am Primärschlüssel. Nicht, dass ich das vorschlagen würde. Oder tun Sie es, wie alle anderen auch, und fügen Sie Ihrer Abfrage den Befehl 'order by' hinzu. Wenn Sie die Geschwindigkeit vergleichen, beachten Sie bitte, dass jede Änderung an Ihrer Tabelle (z. B. Einfügungen) die Reihenfolge zerstören kann. Daher müssten Sie die Alterstabelle bei jeder Abfrage ausführen, um sicherzustellen, dass die Bestellung noch gültig ist. Wenn Sie also die Ausführungszeit vergleichen, müssen Sie die Reihenfolge der Tabellen ändern. – Solarflare

Antwort

0

Wenn Sie die Ergebnisse in irgendeiner Weise bestellt möchten, können Sie müssen eine ORDER BY Klausel hinzuzufügen. Jede Abhängigkeit von Standardaktionen bringt Sie zum Brennen, sobald Sie eine Zeile löschen oder aktualisieren. Geben Sie die gesamte Abfrage zusammen mit SHOW CREATE TABLE ein.

Verwandte Themen