mysql的select的問題

2021-08-30 18:45:54 字數 784 閱讀 6324

select a.*,b.*,c.*,d.*       

from table1 b

inner join table2 d on b.memberid = d.memberid

inner join table4 c on a.exhid = c.exhid

where a.deleted=0 order by a.createtime desc limit 20;

我們的主題從上面一條sql開始,首先這幾種表,資料最多的一張表的資料不過為13000條記錄;但是上面的join

查詢需要半分鐘才能查出來!

這句sql是絕對要優化的,但是問題出在那了?

首先加了兩個相關的索引(a.deleted,a.createtime);但是問題依然存在。

查詢網路,很多人也遇到類似的問題,但還是一些order by,加索引等等一些問題。

通過explain來分析sql,也很正常。

最後將需要查詢的字段,只留乙個,0.09秒結果就出來了。

問題難道出在,顯示的字段過多,這看來是顯然。

下面有做了一些測試,結論為:

mysql,在資料量很少的情況下,大於等於三個inner join,並且四個表都有字段需要顯示時,效能及會變的很慢。這種情況,我認為屬於mysql自身的問題,所以你通過explain等mysql自帶工具來分析,他自然不會告訴你他的毛病,如果知道他都會自己改了不是。所以我們還是要多測試多總結。

解決辦法:避免四個表的join查詢,拆分查詢,或者將需要顯示的字段控制在三個表以內。

mysql的檢索資料SELECT

檢索單個列 select 列名 from 表名 從某個表中檢索某列 檢索多個列 select 列名1,列名2 from 表名 從某個表中同時檢索出多列 檢索所有列 select from 表名 為萬用字元 檢索不同的值distinct 倘若檢索出來的列中有多個重複值,有點眼花繚亂,它可以幫助除去多餘...

mysql的select語句中in的用法是什麼

在mysql中,select語句內in常用於where表示式中,其作用是查詢某個範圍內的資料,in查詢的範圍資料並不一定是明確的,可能會包含子查詢語句,語法為 select from where.in 範圍資料或者子查詢語句 本教程操作環境 windows10系統 mysql8.0.22版本 del...

Mysql中的select查詢操作

mysql中的select查詢操作 一 基本介紹 對於資料庫而言,最常用的sql語句就是select語句了。它的用途是從乙個或多個表中檢索資訊。為了使用select檢索表資料,必須至少給出兩條資訊 想查詢什麼,以及從什麼地方查詢。二 select基本操作演示 首先建立乙個資料表book create...