欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql 單表 in不走索引

林雅南1年前12瀏覽0評論

關(guān)于 MySQL 單表查詢時 in 不走索引問題

什么是 in 查詢語句

in 查詢語句指的是查詢某一字段的多個值,常常被用來代替多個 or 查詢。比如:select * from table where id in(1,2,3,4)

為什么 in 查詢語句容易不走索引

in 查詢語句在查詢的過程中,需要掃描全表,判斷每條記錄是否符合 in 中的要求。由于 in 查詢語句通常會將多個值放到一個括號中,因此其實就相當(dāng)于多個 or 查詢。MySQL 對多個 or 查詢的優(yōu)化不如單個 or 查詢,因此查詢速度也較慢,容易導(dǎo)致不走索引。

如何優(yōu)化 in 查詢語句

1.盡量減少 in 查詢中的值,在絕大多數(shù)情況下,in 語句只需要查詢一兩個值即可。有時候,可以將 in 查詢分成多個等值查詢,這樣可以避免 in 查詢走全表掃描。

2.添加合適的索引,尤其是在經(jīng)常用到的字段上添加索引可以加速 in 查詢。

3.考慮將 in 查詢語句改為 exists 查詢語句,exists 的效率一般比 in 高,因為 exists 只要找到一條符合條件的記錄后就返回結(jié)果。