我怎樣才能提高我的查詢時間?我有一個表省錢的交易與這些領域:加快SELECT查詢上大表
id, customersId, paymentId, amount, cash, createDate
我的查詢得到了客戶的交易:
SELECT id,amount,cash,createDate
FROM customers_transactions
WHERE customersId = 2784
這臺擁有1000萬的記錄或更多。該查詢大約需要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,與酷睿i5 3.2GHz的
我想運行此查詢小於0.5秒
你是否做了解釋查詢的?你有沒有在桌上使用OPTIMIZE?該查詢非常簡單,所以我希望它能夠很容易地拿起相關索引並使用它。 – Kickstart
只試用'customersId'上的索引。或者在'id,customersId'索引中反轉列順序。在SQL實現中,我熟悉複合索引中的「子索引」 - 在這種情況下是'customersId' - 不會被自己利用;如'where customersId = 2784'。如果引用該索引的第一列,則清楚地利用該索引。 – radarbob
在這種情況下,MySQL應該使用索引的第一部分。 http://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html – Kickstart