資料庫查詢時關鍵字IN OR EXIST的執行效率

2022-04-10 09:57:08 字數 1127 閱讀 3368

1、in 和 or 的執行效率:

a.id in(15,150,200,300)

a.id=15 or a.id=150 or a.id=200 or a.id=300

兩個的執行效率基本一樣,

當in後面的條件是固定少量的值時,他會解釋成or連線,即編譯後和or連線一樣;

當in後面的條件很長時,最好使用or連線,因為in在解釋成or連線時有可能有解析時間的bug而使其效率變低。

2、in 和 exist 的執行效率:

select * from t1 where c1 in(select c1 from t2 where t2.c2='xx')

這個例子子查詢的where條件不受外層查詢的影響,這類查詢將自動轉為exist語句,因此效率和exist相同;

select * from t1 where c1 in(select c1 from t2 where t2.c2='xx' and t2.c3=t1.c2)

這個例子子查詢的where條件受外層查詢的影響,這類查詢要看相關條件涉及的字段的索引情況和資料量的大小,資料量大的時候效率非常低,這類查詢建議使用exist;

只顯示t1表的資料:

select * from t1 where id in(select id from t2)

只顯示t1表的資料,關係條件只有乙個,使用in更快;

select * from t1 where id in(select 1 from t2 where id=a.id and c1=a.c1)

只顯示t1表的資料,關係條件不只乙個,使用exist更快select * from t1 exist(select 1 from t2 where id=a.id and c1=a.c1);

顯示兩個表的資料,使用in和exist都不合適,建議使用join:

select * from t1 left join t2 on c1=t1.c1

總結:

in後面的條件是固定值:

少量的用in,大量的用or。

in後面的條件是子查詢:

當只顯示t1表的資料,最好用exist;當兩個表(t1、t2)的資料都顯示,用join。

資料庫分頁關鍵字

mysql分頁採用limt關鍵字 select from t order limit 5,10 返回第6 15行資料 select from t order limit 5 返回前5行 select from t order limit 0,5 返回前5行 mssql 2000分頁採用top關鍵字 ...

Excel VBA高階程式設計 關鍵字查詢資料庫

這個 的主要功能是 根據輸入的關鍵字找到資料庫中,正確的公司名,生成乙個下拉列表,再根據正確的公司名,找到對應的no生成下拉列表 本工作薄實現的功能 1 根據關鍵字模糊查詢 2 自動講搜尋內容生成下拉列表 3 在選中後自動提取出id資訊 附件 private sub worksheet change...

關鍵字查詢

題目描述 每次給你一篇文章,和一些關鍵字,需要你告訴我多少關鍵字將匹配於文章。輸入描述 第一行包含乙個整數,表示有多少篇文章。最後一行是文章,長度不超過1000000。輸出描述 輸出文章中包含多少關鍵字。輸入樣例 15 shehe sayshr heryasherhs 輸出樣例 3源 include...