簡體   English   中英

按鍵自動完成查詢到300萬行表

[英]Key press autocomplete queries to a 3 million rows table

我有一個表fs_city ,具有世界各地300萬個城市,以及一個表fs_country

當用戶訪問它檢測到其國家代碼的網站時,如果用戶來自美國,則要求用戶從框中選擇其國家和城市(在fs_city上查找fs_city城市),如果用戶輸入“ Ne”,他將通過“紐約”獲得一個下拉列表,例如,我這樣做是為了創建自動完成輸入。

問題是,查詢是在每次按鍵時發送的,在我的示例“ Ne”中,對表fs_city有兩個查詢。

另外,即使只有一個查詢,它也需要6秒鍾才能從該表返回響應...我的表具有主鍵。

這是我的SQL查詢:

SELECT 
    ci.city_id,
    ci.country_code,
    ci.city,
    ci.region,
    co.country_name
FROM 
    fs_city as ci,
    fs_country as co
WHERE
    ci.city LIKE "Ne%"
    AND co.country = ci.country_code
    AND ci.country_code = :country
ORDER BY 
    ci.city ASC 
    LIMIT 0,20

如何創建自動完成功能(帶按鍵),以及如何加快fs_city表查詢?

更新 :

fs_city主鍵:city_id

fs_country主鍵:country_id

引擎:InnoDB

jQuery具有與您要查找的東西完全一樣的漂亮小部件,並且我敢肯定您可以限制它,使其僅在設置一定數量的字符后才開始查詢數據庫,以便您可以限制結果。 那應該解決您的速度問題並且縮短您的javascript。 http://jqueryui.com/autocomplete/

EDIT MySQL還有一個LIMIT項來限制返回值,這也可能有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM