亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么IN條件比SQL中的“=”慢?

為什么IN條件比SQL中的“=”慢?

慕蓋茨4494581 2019-07-17 18:09:48
為什么IN條件比SQL中的“=”慢?檢查問題此選擇查詢需要180秒才能完成。(查看對問題本身的評論)。IN只能與一個值進行比較,但時差仍然很大。為什么是那樣?
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

這很有趣,但問題也可以通過準備好的陳述來解決(不確定是否適合每個人),例如:


mysql> EXPLAIN SELECT * FROM words WHERE word IN (SELECT word FROM phrase_words);

+----+--------------------+--------------+...

| id | select_type        | table        |...

+----+--------------------+--------------+...

|  1 | PRIMARY            | words        |...

|  2 | DEPENDENT SUBQUERY | phrase_words |...

+----+--------------------+--------------+...

mysql> EXPLAIN SELECT * FROM words WHERE word IN ('twist','rollers');

+----+-------------+-------+...

| id | select_type | table |...

+----+-------------+-------+...

|  1 | SIMPLE      | words |...

+----+-------------+-------+...

所以,只需在存儲過程中準備語句,然后執行它。以下是一個想法:


SET @words = (SELECT GROUP_CONCAT(word SEPARATOR '\',\'') FROM phrase_words);

SET @words = CONCAT("'", @words, "'");

SET @query = CONCAT("SELECT * FROM words WHERE word IN (", @words, ");";

PREPARE q FROM @query;

EXECUTE q;


查看完整回答
反對 回復 2019-07-17
  • 3 回答
  • 0 關注
  • 1182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號