在sql語句中in關鍵字提示查詢效能
這幾天一個模組即將結束,便開始進行一些優化,以提升效能。發現一個sql語句的查詢速度是6秒,這明顯讓使用者等待過長。
語句其實挺簡單的,上學的時候經常這麼寫,而且記得好多教科書中也是這麼寫的。
簡要形式:
SELECT t1.field1,t1.field2,t1.field3 from t1,t2 where t1.pid = t2.fid and t2.ch='%123456%'
這裡t1表和t2表是相互關聯的,
分析這段sql語句,為什麼會耗費這麼長的時間呢?該怎麼優化呢?
t2表中有大量的資料,要是將2個表做等值關聯,等於建立了一個巨大的表,然後在這個巨大的表中做查詢,怪不得這麼慢呢。
要是能減小等值關聯後的表大小,就可以好很多了。所以想到了in關鍵字
將sql修改為:
SELECT t1.field1,t1.field2,t1.field3 from t1 where t1.pid in (select fid from t2 where t2.ch='%123456%')
執行新的sql,耗費時間為3秒。
相關推薦
在sql語句中in關鍵字提示查詢效能
這幾天一個模組即將結束,便開始進行一些優化,以提升效能。發現一個sql語句的查詢速度是6秒,這明顯讓使用者等待過長。 語句其實挺簡單的,上學的時候經常這麼寫,而且記得好多教科書中也是這麼寫的。 簡要形式: SELECT t1.field1,t1.f
封裝sql語句中in限制查詢個數的方法
sel rim () each tar blog and style months /* * 此方法用於每天淩晨取前一天的回滾用戶賬號 */ public function getRollBackAccount($startTime
面試被問之-----sql優化中in與exists的區別 Mysql中 in or exists not exists not in區別 (網路整理) Sql語句中IN和exists的區別及應用 [筆記] SQL效能優化 - 避免使用 IN 和 NOT IN
曾經一次去面試,被問及in與exists的區別,記得當時是這麼回答的:''in後面接子查詢或者(xx,xx,xx,,,),exists後面需要一個true或者false的結果",當然這麼說也不算錯,但別人想聽的是sql優化相關,肯定是效率的問題,只是那個時候確實不知道它們在sql優化上的區別,只知道用in會進
Sql語句中IN和exists的區別及應用
應用場景 將不 集中 pre 代碼 根據 gif 效率 .cn 表展示 首先,查詢中涉及到的兩個表,一個user和一個order表,具體表的內容如下: user表: order表: in 確定給定的值是否與子查
實習工作中Sql 語句中 IN 和 EXISTS 的心得體會
在學校時做專案時資料庫表少而且資料量也不大,做子查詢的時候一般沒有什麼區別,所以一直以來沒有注意過這個問題。 如今工作後,讓我實現政府執法人員執政編號的修改,用IN做子查詢時發現效率特別慢,最後發現是因為IN語句中查詢順序不同導致的。 IN 語句:只執行一次 &n
在plsql , sql語句中帶有中文的查詢條件查詢不到資料
PLSQL Developer中文顯示亂碼是因為Oracle資料庫所用的編碼和PLSQL Developer所用的編碼不同所導致的。 解決方法: - 1. 先查詢Oracle所用的編碼 select userenv('language') from dual; **
Sql語句中IN等方面的用法
導讀: select * from txt1 select * from txt2 select * from txt1 where name in (select name from txt2 where chk = 0) select * from txt1 where
SQL語句中一些關鍵字的英文來源
不知道大家有沒有跟我一樣的,縮寫幾個讀不出來的字母很難長期記憶,如果是英文單詞很容易記憶 DESC table_name查詢表結構中的DESC是英文單詞description的縮寫 ASC ascending order升序 DESC descending order降序
mybatis的xml中sql語句中in的寫法
這裡使用 foreach標籤 <foreach item="item" collection="listTag" index="index" open="(" separator="," close=")"> #{item} </foreach>
提交訂單效能優化系列之013-測試SQL語句中少查詢幾個欄位(包括大欄位)
概括總結 這一版本寫了兩個測試類,一個測試類中查詢全部欄位,另一個測試類中只查詢必要的欄位,然後對比效能。結論是:根據是減少的欄位的長度不同,效能會不同。具體請檢視下面的測試結果。 013版本更新說
SQL 語句中模糊搜尋查詢 LIKE 關鍵字
LIKE 用在 SQL 語句中的 WHERE 語句中 LIKE 的幾個具體運用示例: 1: 搜尋表a 中欄位b中首字母是8的所有資料 SELECT * FROM A WHERE LIKE B='8%' 2: 搜尋表A 中欄位 b 中尾字母
Mybatis中sql語句中的in查詢,一定要判斷null的情況
不嚴謹的寫法,可能會報錯:in (),這種情況不符合mysql的語法。 select from loanwhere LOAN_ID in <foreach item="item" index
SQL語句中exists和in的區別
splay 比較 server for target 空值 不存在 依次 第一個 轉自https://www.cnblogs.com/liyasong/p/sql_in_exists.html 和 http://blog.csdn.net/lick4050312/artic
SQL語句中find_in_set、like、in的區別及使用方法
mic 基本語法 str 字段名 fix dsm 變量 com 查詢 摘自 https://blog.csdn.net/sunny1660/article/details/78613000 find_in_set(str,strlist)函數 str 要查
MySQL中一個sql語句包含in優化問題
col eat pre pan span mysq fin limit clas 第一版sql: SELECT module.id, module.module_name, module.module_code `module` where 92 IN (module
關於mysql的sql語句中` `字元的用法 關鍵字等處理
SELECT * FROM `table` WHERE `from` = 'abc' ; 當你的資料表的表名(上面的表名是table)或者欄位名字(上面的欄位名是from)是關鍵字的時候,這時就會有衝突了,mysql的轉移字元是 &
SQL查詢語句中引數帶有中文查詢不到結果
今天寫個小demo的時候發現sql語句裡面的username為中文的時候就不能查到正確結果,sql語句如下: String sql = "select * from user where username=? and password=?"; 但是在navicat裡面直接查詢就能
SQL語句中not in 和not exist的區別
in和exists in 是把外表和內表作hash 連線,而exists是對外表作loop迴圈,每次loop迴圈再對內表進行查詢。一直以來認為exists比in效率高的說法是不準確的。 如果查詢的兩個表大小相當,那麼用in和exists差別不大。 如果兩個表中一個較小,一個是
機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中單引號與雙引號區別)
收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^ 一、收取金額查詢窗體的流程圖: 二、問題集 這是什麼錯誤呢,為什麼會出現這個型別的錯誤? 產生此問題的程式碼部分是什麼樣子的呢? 以
SQL聯合查詢及SQL語句中日期格式的轉換
SQL 三表聯合查詢用法 及 如何將日期資料的格式進行轉換 SQL三表聯合查詢 如下三張表 表1–TableName1 NAME AGE amy 18 表B—Ta