tft每日頭條

 > 生活

 > mysql複雜統計查詢

mysql複雜統計查詢

生活 更新时间:2024-08-08 03:12:12
in和exists的差異(挺大):

1、從語義上來說:in是去匹配in後的結果集;exists是條件上的二次匹配,匹配和結果集内相同的數據。

2、實現的效果差異不大,内部的實現差異挺大。in是有數量上限的,exists沒有。

in,是由in後面的數據先運行==>得出結果集後再去匹配;

exists,則相反,是先運行外面的結果,再去和exists内的數據做匹配;

執行順序和效率:

1、in先執行子查詢,将子查詢的結果存放在緩存中,在執行外層的查詢,适合用在子查詢結果集較小的情況。

2、exists先執行外查詢,将外查詢的每一條結果放到内查詢中比對,如果存在,就保留外查詢的結果,否則删除,适合用在外表結果集小于内表的情況。

總結:in内部的數據要少一些,exists要外部數據少一些,更能提升效率。

注意:

exists用于檢查子查詢是否至少會返回一行數據,該子查詢實際上并不返回任何數據,而是返回值true或false。

select * from health_sys_user WHERE user_id in (SELECT user_id FROM health_sys_user WHERE user_id = 1 OR user_id = 26); select * from health_sys_user WHERE exists (SELECT * FROM health_sys_role where role_id=26);

mysql複雜統計查詢(SQL查詢優化MySQLin和exists的區别總結)1

mysql複雜統計查詢(SQL查詢優化MySQLin和exists的區别總結)2

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved