3
如果mysql中的IN
子句的值列表具有重複值並且沒有排序,它會影響查詢的性能。MySQL如果列表中的子句具有重複的元素並且沒有排序
例如
SELECT * FROM `t1` WHERE `id` IN (2,2,3,1,1);
V/S
SELECT * FROM `t1` WHERE `id` IN (1,2,3);
如果mysql中的IN
子句的值列表具有重複值並且沒有排序,它會影響查詢的性能。MySQL如果列表中的子句具有重複的元素並且沒有排序
例如
SELECT * FROM `t1` WHERE `id` IN (2,2,3,1,1);
V/S
SELECT * FROM `t1` WHERE `id` IN (1,2,3);
MySQL
將擺脫不同的值和優化階段對它們進行排序。
這會稍微影響性能,但對於大多數真實世界的查詢,您不會注意到任何差異(它是毫秒級別)。
你需要擔心這一點,當你使用的是一些查詢關鍵詞,比如:
SELECT * FROM `t1` WHERE `id` IN (SELECT `id` FROM `t2`);
而且在t2
行returing數量是大於1000!
我認爲你的意思是「重複」值而不是「獨特」值。儘管MySQL處理查詢的方式非常有用。這些地方有任何文檔嗎? – somnath