0
一般來說,如果在有多種不同的可能性,列,表格,結果等的情況下優化了20-30個可選字段,那麼如何從「高級搜索表單」生成MySQL查詢?如何從「高級搜索表單」優化查詢?
一般來說,如果在有多種不同的可能性,列,表格,結果等的情況下優化了20-30個可選字段,那麼如何從「高級搜索表單」生成MySQL查詢?如何從「高級搜索表單」優化查詢?
一般來說,它們不會從數據庫中返回。使用具有許多字段選項的高級搜索,並且可能還會從搜索服務器(例如Lucene,Sphinx或Xapian)返回一些用於良好度量的布爾邏輯。
從數據庫返回幾乎不可能有效。它通常是動態生成的查詢,如做:
SELECT ... WHERE 1=1
然後,環比對方字段並添加
AND field LIKE '%abc'
AND field_2 LIKE '%def%'
AND field LIKE 'GHI%'
Idealy加入whildchar %
在開始或結束時,如果可能的(由於性能原因),或者兩者都用於現場數據中的搜索。
構建和運行此查詢使得它幾乎不可能具有良好的索引,這使得它們變慢並且成爲性能瓶頸的主要候選對象。
謝謝你的見解,史蒂夫。如果您在社交網站上進行高級用戶配置文件搜索,您會繼續使用搜索服務器嗎? – ProgrammerGirl 2013-03-19 23:12:48
@Programmer它真的取決於有問題的數據集以及您正在搜索的字段。有時候一個好的規範化模式設計可以幫助很大 - 例如存儲一個CountryId,StateId,TownId等,並且過濾附近的人更加高效,因爲必須通過操作字符串來生成相同的數據。搜索服務器是爲複雜的搜索而設計的,它們通常比RDBMS中的全部搜索服務器都快並且可擴展。 – Steve 2013-03-20 10:55:24