Mysql中的FIND_IN_SET函數在我知道它之前,我在做一個一對多的外鍵查詢時,都會在中間設計一個關系表。比如一篇文章(post)對應多個標簽(tag),我就會在中間設計一個關系表(post_tag_mapping)來記錄文章和標簽的對應關系,然后查詢某一個標簽下的文章時,就用JOIN語句來實現了,這也應該是處理一對多關系查詢時的標準做法。一般語句就像下面SELECT*FROMpostLEFTJOINpost_tag_mappingWHEREtag_id=123但是當我發現FIND_IN_SET函數后,就可以完全不用JOIN這種查詢方式了,我們完全可以在文章表里設置一個類型為SET的標簽字段(tags),它存儲標簽id的格式就像這樣111,222,333,查詢語句就變成了SELECT*FROMpostWHEREFIND_IN_SET('123',tags)不用做連接查詢了,我不知道這兩者在查詢效率上哪個更占優勢?他們的應用場景有什么需要注意的地方?SET類型能夠做索引嗎,做完以后對FIND_IN_SET有用嗎?
Mysql中FIND_IN_SET與JOIN在一對多關系查詢時的優劣
慕森卡
2019-03-29 10:58:19