Mysql
使用 LEFT JOIN 和 GROUP_CONCAT 索引哪些列
所以我有一個複雜的 MySQL 搜尋查詢,我想知道我需要索引哪些列來加快搜尋速度:
SELECT wpp.ID, post_title, wp_terms.name AS category, wp_terms.slug AS slug, supplier_company, GROUP_CONCAT(wp_terms.slug SEPARATOR ', ') AS allslug, GROUP_CONCAT(wp_terms.name SEPARATOR ', ') AS allcatname FROM wp_posts AS wpp LEFT JOIN wp_term_relationships ON wpp.ID = object_id LEFT JOIN wp_terms ON term_taxonomy_id = wp_terms.term_id LEFT JOIN wp_teleapo_supplier AS s ON wpp.post_author = s.ID WHERE post_type = 'post' GROUP BY wpp.ID
1)如何加快group_concat?2)我應該在我的 s
索引列嗎?像:和?
ON``LEFT JOIN``wpp.ID``object_id
您必須為用於綁定表或限制結果的所有欄位創建索引:
wpp.ID object_id term_taxonomy_id wp_terms.term_id wpp.post_author s.ID post_type
一些欄位已經被索引為主鍵,所以不要重複索引,這會影響 RAM 消耗和性能。
首先,您現在要做的就是啟動帶有
EXPLAIN
前綴的查詢並顯示結果。注意
始終為連接表使用別名,例如程式碼中的第三個。始終明確指定您引用的表,例如
wp_terms.term_id
或s.id
。