2016-07-29 51 views
0

兩個字段搜索的時間複雜度。如果我有2個索引字段(X,Y兩個雙打),我有查詢什麼是在MySQL

SELECT * 
FROM locations LIMIT 10 
WHERE x < 25.65434 AND x > 23.54654 
    AND y < 37.67345 AND y > 32.98564 

什麼是此查詢的時間複雜度。如果只有一個查詢,它應該是O(log(n)),但考慮到有兩個字段,我想不出可以在O(log(n))中解決的任何數據結構。 sql數據庫如何存儲索引,以及如何查詢查詢是否位於上面提到的兩個字段中。

+0

你看過http://dev.mysql.com/doc/refman/5.7/en/select-speed.html – frankgreco

+2

有趣的問題。但你可能不得不計算自己。用10k,100k和1000k創建示例數據並檢查解釋計劃。對於性能問題,您必須包含[QUERY PLAN](http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan) MySQL index [** TIPS ** ](http://mysql.rjweb.org/doc.php/index_cookbook_mysql) –

回答

0

SQL Fiddle Demo

只給你一個想法。

ROWS  | MATCH  | TIME 
1.000.000 | 149 rows | 3 ms 
    100.000 | 15 rows | 1 ms 

    10.000 | 2 rows | 1 ms