Wie kann ich meine Abfragezeit verbessern? Ich habe eine Tabelle Geldtransaktionen mit diesen Feldern für das Speichern:Beschleunigen Sie SELECT Abfrage auf große Tabelle
id, customersId, paymentId, amount, cash, createDate
Meine Anfrage ein Kunden-Transaktionen erhält:
SELECT id,amount,cash,createDate
FROM customers_transactions
WHERE customersId = 2784
Diese Tabelle hat 10 Millionen Datensatz oder mehr. Die Abfrage dauert etwa 13 Sekunden.
Die Tabelle hat diese Indizes:
id, customersId (unique)
customersId, createDate (unique)
Und diese Partitionen:
10 partiotions By RANGE on customersId
LESS THAN 1000
LESS THAN 2000
LESS THAN 3000
LESS THAN 4000
LESS THAN 5000
LESS THAN 6000
LESS THAN 7000
LESS THAN 8000
LESS THAN 9000
LESS THAN 10000
Der Server verfügt über 8 GB RAM, mit 3,2 GHz Core i5
ich ausführen möchten diese Abfrage weniger als 0,5 Sekunden
Haben Sie eine EXPLAIN der Abfrage durchgeführt? Hast du OPTIMIZE auf dem Tisch benutzt? Die Abfrage ist ziemlich einfach, also hätte ich erwartet, dass sie den relevanten Index ziemlich leicht aufnimmt und benutzt. – Kickstart
versuchen Sie nur einen Index für 'customsId'. Oder kehren Sie die Spaltenreihenfolge im Index 'id, customesId' um. In einer SQL-Implementierung bin ich vertraut mit dem "Sub-Index" in einem zusammengesetzten Index - in diesem Fall ist das 'customsId '- würde nicht von selbst verwendet werden; wie in 'where customsId = 2784'. Wenn auf die erste Spalte dieses Index verwiesen wird, wurde der Index eindeutig verwendet. – radarbob
In MySQL sollte in diesem Fall der erste Teil des Indexes verwendet werden. http://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html – Kickstart