Mysql表資料3萬,查詢20多分鐘還沒出結果,是為什麼?

時間 2021-06-02 21:04:33

1樓:timlcy

子查詢和t這個表做了迪卡爾積,如果兩個表資料都為3萬,那麼就是3萬乘3萬的資料量,所以很慢,建議改為join,或者full join,

2樓:stubborn

查詢慢的問題,可以一般可以通過建索引來解決,對你要的字段建索引(主鍵不需要的,自帶索引),但你這個問題完全不是索引的問題。

你這個v表的結果集很可能就是導致很慢的原因,可以嘗試換個方式寫這個SQL,通過連線join的方式來實現多表查詢。

舉個例子比如說除了t表的資料你還要查這個v表的qc欄位(我是看不清你裡面具體寫的啥,姑且找個看得清的),關聯v表和t表(join起來,那張做主表你自己定,然後你再確定是左連線還是右連線)在where條件中再去決定你要什麼條件下的qc資料。

3樓:xchliu

從提問的角度來說,資訊不全,表結構,資料量,執行場景,服務配置,mysql引數。

從解決問題的角度,profiling可以查,系統負載比如iostat可以查。

從思路上來說:希望達成什麼樣的效能,也就是目標是什麼,可以動用的資源有哪些,比如sql改寫,配置調整等。

MySQL中2個表的查詢結果疑問

關鍵 我理解的SQL有乙個很重要的一點,是找出不同表的關係,及它們之間的連線路徑。你提供的兩張表你自己應該明確知道,student表中的ID對應的是score表中的ID,如果你能明確這點在SQL語言的中的意義就好寫了。關於你的題,自己想下簡單關係,然後寫成SQL 兩個表靠ID進行關聯,關係是stud...

mysql 連表查詢使用join 和 where 區別大麼? 兩個錶用 和join連線什麼區別?

如果是inner join 沒有區別,因為優化後都是一樣的如果是left join 有區別,除非優化器可以通過邏輯優化判斷兩個表的結果是一樣的,否則兩個sql的執行是不一樣的 舉個例子 這兩個都是等於4,但是只是運氣好剛好兩個是相等的2 2 4 2 2 4 tslilove 首先我先更正一下你的問題...

MySQL中1萬條資料查詢花費35秒,求解釋?

聿明leslie 你這條query為什麼會慢呢?b表的where條件是個子查詢,這個子查詢不能被改寫成semi join,那麼就是老老實實的子查詢,子查詢的實現等同於nested loop join,就是外表做驅動表,驅動內錶做rescan,b表有1萬條資料,那麼就會驅動aa表1萬次rescan,這...