1
我上的應用程序,將通過在搜索游泳池禁止無關標籤做一些智能數據搜索的工作。優化查詢了許多一對多的關係,尋找無關標籤
例如(抱歉,如果我的格式可以是蹩腳),鑑於此表:
_id | _tagname
1 A
1 B
1 C
2 A
2 B
3 A
4 B
5 C
6 D
當用戶選擇標籤
甲,(下面將關於
每個標籤選擇執行)
:
- 取的ID,將匹配的標籤 - >1,2,3現在將是新的搜索池
- 隱藏所有標籤將不相關 - >d因爲標籤乙和Ç將允許用戶過濾標籤來獲取ID
TL; DR:這是我目前的做法,如果有辦法優化它,因爲它是目前花費的時間太長得到的結果
SELECT _tagname FROM datatags WHERE
(_tagname) NOT IN
(SELECT _tagname FROM datatags WHERE
_id IN (1,2,3))
GROUP BY _tagname
謝謝你,我不知道!這是我第一次發佈提問,請把它給我:)容易
編輯:格式化
最終,我只是想找到不會有助於濾除當前ID的標籤列表。由於如果當前結果返回ID的** 1,2,3 **,則標籤** D **與進一步縮小結果完全無關,因爲** 1,2,3 **都沒有標籤* * d **。所以我想確保標籤** D **可以被「建議」爲不相關的。 你的答案看起來可能會很快,我會嘗試並讓你知道! – immoteous
它大約快了8-9倍(這真是太神奇了),但考慮到我的表的大小,它還是相當長的。但你的建議幫助我形成另一種解決方案。謝謝,所以我會接受你的回答:) – immoteous
這是對未來的任何人有類似的問題: ,因爲這是一個多對多的關係,有一張表,其中包含所有可用標籤的唯一列表,所以使用user113215的建議,在**標記**表和** _標記名**的** distinct **列表之間進行左連接。關於**連接**的信息: http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins – immoteous