Mysql

使用 LEFT JOIN 和 GROUP_CONCAT 索引哪些列

  • March 17, 2016

所以我有一個複雜的 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_ids.id

引用自:https://dba.stackexchange.com/questions/132463