2016-07-24 9 views
0

Ich habe eine MySQL-Tabelle mit Millionen von Datensätzen, und jeden Tag werden Hunderte von Datensätzen in die Tabelle eingefügt.So optimieren Sie die häufigste MySQL SELECT-Abfrage

Im Front-End, zeigt es die letzten 100 Datensätze die Abfrage mit:

SELECT * FROM 
table_a 
ORDER BY creation_time DESC 
LIMIT 100 

Jedes Mal, wenn ein Benutzer die Seite besucht, wird es durch den großen Tisch scannen und die Sortierung durchzuführen. Das Verfahren sieht sehr ressourcenintensiv aus.

Ich finde, dass es eine VIEW in MySQL gibt. Kann ich die Leistung optimieren, wenn ich eine Ansicht zum Speichern der Ergebnisse erstelle? Ist die view mit der ursprünglichen Tabelle synchronisiert? Oder andere Mittel, um die Abfrageleistung zu steigern?

Danke!

+0

Ansichten der Regel die Dinge verlangsamen. Konzentrieren Sie sich auf die zu startenden Indizes. Und überprüfen Sie, ob Sie alle diese Zeilen benötigen. – Drew

+0

In Bezug auf @ Drew's Punkt: Sie können einen Index für 'creation_time' hinzufügen. 'ALTER TABLE' table_a' HINZUFÜGEN INDEX 'idx_table_a_creation_time' (' creation_time') ' – 1000111

+0

Vielen Dank. Wie kann man am besten mit einer solchen Situation umgehen? Die Tabelle wächst von Tag zu Tag, aber immer werden die neuesten Datensätze ausgewählt. – Yota

Antwort

0

können Sie versuchen, die Dinge nach Ihrer Anfrage zu beschleunigen:

1. Select only required column(s) instead of all (*) in SELECT Query. 
2. Create Indexes on creation_time.