回覆列表
-
1 # 使用者3979633029077
-
2 # 使用者2458114238191884
首先你得知道in的功能是什麼。
sql裡面的、on 、in 、between都有什麼區別
on是關於的意思、用於兩個關聯的條件上面、比如 a join in b on a.name=b.name
in是落於的意思、在你有明確的指向值的時候用。不如 in("上海,北京")
between是位於的意思、用於區域間的指向用。比如 where age between 18 and 24
自己好好理解
用redis、memcache這樣的快取把結果存起來是最通用的方法。其次是存記憶體裡,但是這其實就是相當於是前一種方法的閹割版。不要每次從資料庫裡查。我假設你用的是mysql,《高效能mysql》裡提到,儘量避免複雜的聯查出現,如果可以,儘量在程式中保留中間值以減少SQL的複雜性。實際很多時候一條複雜的查詢語句執行時間要長過迭代執行多條簡單語句再在記憶體中拼接的時間。所以,建議你用一個redis存這些資料,它是專門用來解決這個問題的。你提到要在這個基礎上做排序抽取和模糊搜尋,這樣的話,排序和抽取redis應該可以勝任,模糊搜尋需要用專門的全文搜尋工具,比如sphinx,我們這用的是coreseek,不過好像比較冷門,我也不太熟,就不多說了。