高階查詢二

2021-10-06 12:46:42 字數 447 閱讀 1582

in 語句:只執行一次

確定給定的值是否與子查詢或列表中的值相匹配。in在查詢的時候,首先查詢子查詢的表,然後將內錶和外表做乙個笛卡爾積,然後按照條件進行篩選。所以相對內錶比較小的時候,in的速度較快。

exists語句:執行student.length次

指定乙個子查詢,檢測行的存在。遍歷迴圈外表,然後看外表中的記錄有沒有和內錶的資料一樣的。匹配上就將結果放入結果集中。

如果查詢語句使用了not in 那麼內外表都進行全表掃瞄,沒有用到索引;而not extsts 的子查詢依然能用到表上的索引。所以無論那個表大,用not exists都比not in要快。

in查詢在內部表和外部表上都可以使用到索引。

exists查詢僅在內部表上可以使用到索引。

表的規模不是看內部表和外部表,而是外部表和子查詢結果集。

MySql高階查詢(二)

exists 和 not exists子查詢 exists 語法 select from 表名 where exists 子查詢 not exists not exists和exists實現相反操作 子查詢注意事項 查詢語句可以巢狀在任何表示式出現的位置 1 巢狀在select語句的select子句...

MyBatis 高階查詢(二)

一對多對映 在上一節中,我們使用了4種方法實現一對一對映,這一節,一對多對映只有兩種配置方式,都是使用collection標籤進行的 collection集合的巢狀結果查詢 和association類似,集合的巢狀結果查詢就是通過一次sql查詢將所有的結果查詢出來,然後通過配置的結果對映,將資料對映...

MySQL高階知識(二) Join查詢

前言 該篇主要對mysql中join語句的七種情況進行總結。join主要根據兩表或多表之間列的關係,從這些表中進行資料的查詢。1.tb emp表。drop table if exists tb emp create table tb emp id int 11 not null auto incre...