クエリ時間をどのように改善できますか?私はこれらの分野でのお金の取引を保存するためのテーブルを持っている:大きいテーブルでSELECTクエリを高速化する
id, customersId, paymentId, amount, cash, createDate
私のクエリは、顧客の取引を取得します。
はSELECT id,amount,cash,createDate
FROM customers_transactions
WHERE customersId = 2784
このテーブルには、千万のレコード以上を持っています。クエリの実行には約13秒かかります。
の表は、これらのインデックスがあります
id, customersId (unique)
customersId, createDate (unique)
そして、これらのパーティション:
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
サーバは8 GBのRAMを持っている、CORE i5の3.2GHzの
で、私はこのクエリを実行したいです0.5秒未満
クエリのEXPLAINを実行しましたか?テーブルでOPTIMIZEを使用しましたか?クエリは非常に簡単なので、関連するインデックスをかなり簡単に取得して使用することが期待されます。 – Kickstart
'customersId'のみのインデックスを試してみてください。または、 'id、customersId'インデックスで列の順序を逆にします。 SQLインプリメンテーションでは、複合インデックスの「サブインデックス」(この場合は「customersId」)に精通していますが、それ自体では利用されません。 'customersId = 2784'のように。そのインデックスの第1列を参照すると、インデックスが明確に利用されました。 – radarbob
MySQLでは、この場合インデックスの最初の部分を使うべきです。 http://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html – Kickstart