in 操作符允許您在 where 子句中查詢多個值。
select column_name(s)
from table_name
where column_name in (value1,value2,...);
(使用northwind樣本資料庫) select * from customers where city in ('paris','london');
db.collection.find( } )
not exists,exists的用法跟in不一樣,一般都需要和子表進行關聯,而且關聯時,需要用索引
,這樣就可以加快速度
exists是用來判斷是否存在的,當exists(查詢)中的查詢存在結果時則返回真,否則返回假。not exists則相反。
in 是把外表和內錶作hash 連線,而exists是對外表作loop迴圈,每次loop迴圈再對內表進行查詢。一直以來認為exists比in效率高的說法是不準確的。
如果查詢的兩個表大小相當,那麼用in和exists差別不大。
如果兩個表中乙個較小,乙個是大表,則子查詢表大的用exists,子查詢錶小的用in:
例如:表a(小表),表b(大表)
not in 和not exists如果查詢語句使用了not in 那麼內外表都進行全表掃瞄,沒有用到索引;
而not extsts 的子查詢依然能用到表上的索引。所以無論那個表大,用not exists都比not in要快。
你也可以訪問
:獲取更多的資訊
關係型資料庫 sql in和where
in 和 where sql 語句中in 和 where 的含義不同。應用解釋如下 1 如需有條件地從表中選取 刪除 更新資料時,使用where 2 in只作為where條件子句下的乙個運算子,除了in之外還有between like 等運算子。下面舉例說明 1 查詢名字為a和b的學生,則語句為 s...
摘要 資料庫 ClickHouse DDL
create database if not exists db name on cluster cluster create table if not exists db.table name on cluster cluster name1 type1 default materialized ...
資料庫摘要 6 Sql Inner
inner join 關鍵字在表中存在至少乙個匹配時返回行。sql inner join 語法 select column name s from table1 inner join table2 on table1.column name table2.column name 或 select c...