簡體   English   中英

MySQL索引-連接兩個表

[英]mysql indexing - joining two tables

我有一個表T1,其中2列是c1和c2。它們是表格U1中col c3的外鍵引用cols。 查詢的內容類似於"select ....... from T1, U1 as Ux and U1 as Uy where T1.c1 = 'xyz' and T1.c1 = Ux.c3 and T1.c2 = Uy.c3"

如果索引了哪個col,則結果最佳。 單獨使用 c1c1 c2的組合

您可以使用EXPLAIN並僅放置兩個方案。 自己嘗試,您將輕松發現更好的查詢

加入怎么樣?

SELECT * FROM T1
INNER JOIN U1 ON U1.c3=T1.c1 AND U1.c3=T1.c2
WHERE T1.c1 = 'xyz'

我並沒有真正了解您要嘗試執行的操作,但是嘗試從此c1和c2獲取任何內容必須相同。

只要您的“ c1”列是查詢的唯一部分,並且在復合索引(c1,c2)的情況下,它位於索引的第一位置,則不會產生實際影響。 它將仍然被優化。 如果“ c1”位於第二位置,那么就不好了……因為從本質上講,必須循環查找匹配的c1的每個c2。 就是說,如果您的c2列是一個可怕的值(例如varchar 1000字符串),它將很麻煩,因為它必須考慮索引鍵的長度和額外的分頁。 但是,無論如何都不會對這種組合建立索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM