比方說,你有一個查詢一樣,如何使用> =和<=時使用索引MySQL表?
select ID, REGION, START, END from COORD_SYSTEM
where REGION=? and TYPE=? and START >= ? and END <= ?;
而且我們說這個表有大約50,000行。 REGION列有500個不同的值,TYPE列有50個不同的值。 ID列是主鍵。
索引表的最佳方法是什麼?我不太確定是否可以通過> =和< =符號實現覆蓋索引的。這裏有幾個選項:
- 上COORD_SYSTEM(區,TYPE)
- 上COORD_SYSTEM創建索引(區,類型,起始)
- 上COORD_SYSTEM(區,類型,開始,結束創建索引創建索引)
更新 - 這裏的解釋聲明:
id: 1
select_type: SIMPLE
table: COORD_SYSTEM
type: range
possible_keys: indx_A
key: indx_A
key_len: 50
ref: NULL
rows: 590
Extra: Using where
1 row in set (0.00 sec)
我會說3應該是更好的,你有沒有嘗試過一些測試數據與大量的行? –
使用選項3,它應該只能在索引上運行。另外選項2和3應具有相同數量的掃描行。你可以發佈EXPLAIN的嗎? – Vatev
您是否嘗試過'在COORD_SYSTEM上創建索引(REGION,TYPE,START,END desc)'? –