1. 程式人生 > >【MySQL】基於MySQL的SQL優化(三)——對子查詢進行優化

【MySQL】基於MySQL的SQL優化(三)——對子查詢進行優化

    通常情況下,需要把子查詢優化成JOIN查詢。

優化前

    這是一個實現查詢演員名為“sandra”的表演影片片名的SQL,通過EXPLAIN關鍵字進行解析,這個查詢中包含三個子查詢,並且出現了兩次ALL全表掃描的查詢,需要優化。
下面我們把所涉及的子查詢進行JOIN形式的改寫。

ON

    或者用WHERE的形式進行優化。

WHERE

    如圖,從EXPLAIN的解析上來看查詢已經進行了非常大的優化提升,不僅減少了一次ALL全表掃描,還讓所有的SQL的select_type變成了SIMPLE簡單查詢。
    注意:在進行優化時要注意一對多的關係,要處理重複資料(如使用DISTINCT關鍵字)。

相關推薦

MySQL基於MySQL的SQL優化——對子查詢進行優化

通常情況下,需要把子查詢優化成JOIN查詢。 這是一個實現查詢演員名為“sandra”的表演影片片名的SQL,通過EXPLAIN關鍵字進行解析,這個查詢中包含三個子查詢,並且出現

php面向對象

lamp1 變量 步驟 efi 第一個 面向對象 我們 ati 單例 知識點關鍵詞:FSCICATS一、 f => final:  a) 是一個修飾符,用來修飾類和成員方法  b) 使用final修飾符修飾的類不能被繼承,使用final修飾符修飾的成員方法,不能被重寫

20171115BugFree使用手冊Bugfree界面和後臺管理

結果 所有 idt 重新 case 系統 切換 cal define 三、Bugfree界面 1. 登錄界面   如圖所示:    2. 主界面   輸入系統提供的默認管理員用戶名:admin,密碼(原始):123456;語言選擇默認“簡體中文”。點擊“登錄”按鈕,來到

MySQL權限管理轉載

ant tin 視圖 臨時 允許 proc shu func for rom http://hi.baidu.com/lrood/blog/item/e52273b4260f71c737d3ca6e.html本文實例,運行於 MySQL 5.0 及以上版本。MySQL 賦

筆記ThreadPoolExecutor原始碼閱讀

執行緒數量的維護 執行緒池的大小有兩個重要的引數,一個是corePoolSize(核心執行緒池大小),另一個是maximumPoolSize(最大執行緒大小)。執行緒池主要根據這兩個引數對執行緒池中執行緒的數量進行維護。 需要注意的是,執行緒池建立之初是沒有任何可用執行緒的。只有在有任務到達後,才開始建立

Flask4個sessionFlask_session擴充套件包

在上一篇文章4個session(二)中的session是Flask內建的,本篇文章要討論的是Flask_session擴充套件包。 安裝命令: pip3 install flask-session 匯入方式: from flask_session import Session

翻譯CodeMix使用教程:Emmet

CodeMix中的Emmet Emmet是改善開發人員工作流程的好方法。 使用Emmet,可以動態解析類似CSS的表示式,並根據您在縮寫中鍵入的內容生成輸出。 Emmet支援內置於CodeMix中,無需擴充套件。 CodeMix外掛與基於Eclipse的IDE和工具(如MyEclips

字串匹配演算法位運算的魔法——KR與SO

位運算經常能做出一些不可思議的事情來,例如不用臨時變數要交換兩個數該怎麼做呢?一個沒接觸過這類問題的人打死他也想不出來。如果拿圍棋來做比喻,那麼位運算可以喻為程式設計中的“手筋”。 按位的儲存方式能提供最大的儲存空間利用率,而隨著空間被壓縮的同時,由於CPU硬體的直接支援,速度竟然神奇般

POCOPOCO學習總結——交叉編譯

最小功能編譯 編譯選項:–minimal :只構建XML, JSON, 工具 and 網路 1 修改配置檔案 $ vi poco-1.7.8p3-all/build/config/ARM-Linux 13 LINKMODE ?

JunitJunit使用教程

四、例項總結 1. 引數化測試 有時一個測試方法,不同的引數值會產生不同的結果,那麼我們為了測試全面,會把多個引數值都寫出來並一一斷言測試,這樣有時難免費時費力,這是我們便可以採用引數化測試來解決這個問題。引數化測試就好比把一個“輸入值,期望值”的集合傳入給測試方法,達到

原創Linux中斷子系統-softirq和tasklet

# 背景 - `Read the fucking source code!` --By 魯迅 - `A picture is worth a thousand words.` --By 高爾基 說明: 1. Kernel版本:4.14 2. ARM64處理器,Contex-A53,雙核 3. 使用工具:S

Mysql 數據庫優化——分區和分表個人經驗

incr 返回 for 16px 使用 tree 主鍵 ref 相同   引:MyISAM存儲引擎的表在數據庫中,每一個表都被存放為三個以表名命名的物理文件。     1、首先肯定會有任何存儲引擎都不可缺少的存放表結構定義信息的.frm文件,     2、另外還有.MYD和

MySQL基於MySQL的SQL優化——對count、max優化

max(): 通過一條含有max()的語句來了解一下通過索引來優化帶有max()方法的SQL語句。 SELECT MAX(payment_date) FROM payment;

MySqlSql優化——效能優化

一、前言       當資料庫資料達到一定數量的時候,結合資料庫連線池Druid的視覺化監控介面,對系統中執行的sql語句進行檢測,對使用頻繁、執行時間長的sql語句進行優化。 二、優化方案原則 [原則一:選擇需要優化的SQL] 1,選擇需要優化

安全牛學習筆記手動漏洞挖掘

信息安全 security+ 漏洞挖掘 手動漏洞挖掘Directory travarsal / File include(有區別/沒區別) 目錄權限限制不嚴 / 文件包含/etc/php5/cgi/php.ini allow_url_include = on應用程序功能操作文件,限制不

搜尋那些事細談lucenelucene核心API簡介

經過前面的簡單理論介紹,相信大家對搜尋引擎lucene有個簡單的瞭解。前面我們也提到過在lucene中主要包括索引和搜尋這兩大方面的元件。今天我們我們就通過一個簡單的例項來看一下lucene給我們提供的有關這兩個元件的簡單用法。 一:建立索引 在用lucene搜尋之前,我們首先要做的

原創pygame學習筆記2----pie遊戲優化

  測試程式碼情況 (1)做到了弧形可以按出來 (2)數字的顯示正確 (3)出的一些低階錯誤         temp:\\pygame2.txt 這樣的錯誤, temp\\pygame2.txt 導致 這樣的錯誤,

AI實戰快速掌握TensorFlow:激勵函式

到現在我們已經瞭解了TensorFlow的特點和基本操作(見文章:快速掌握TensorFlow(一)),以及TensorFlow計算圖、會話的操作(見文章:快速掌握TensorFlow(二)),接下來我們將繼續學習掌握TensorFlow。 本文主要是學習掌握TensorFlow的激勵函式

MySQL優化 表的設計

1、什麼樣的表才符合3正規化(3 NF)? 表的正規化,是首先符合1正規化,才能滿足2正規化,進一步才能滿足3正規化;(現在最高級別是6正規化) 第一正規化:1NF 是對屬性的原子性約束,要求表的屬性(列)具有原子性,不可再分解;(只要是關係型資料庫[mysql/oracle/db2/sql server

朝花夕拾記憶體篇之Java GC

        在上一篇日誌中有講到,JVM記憶體由程式計數器、虛擬機器棧、本地方法棧、GC堆,方法區五個部分組成。其中GC堆是一塊多執行緒的共享區域,它存在的作用就是存放物件例項。本節中所要講述的各種場景,就發生在這塊區域,垃圾回收也主要發生在GC堆記憶體中。本章內容為高質量面試中幾乎是必問的知識點,尤其是