簡體   English   中英

MYSQL 兩表查詢 vs 一次查詢

[英]MYSQL two tables query vs one of a time

我有這個查詢:

SELECT 
    cms_mod_lajmet_entry.LajmID, 
    page_id, date, 
    foto, eshte_video, 
    title, intro, 
    komente 
FROM cms_mod_lajmet_entry, cms_mod_lajmet_entry_language 
WHERE cms_mod_lajmet_entry.LajmID = cms_mod_lajmet_entry_language.LajmID 
    AND cms_mod_lajmet_entry.page_id = 2  
    AND cms_mod_lajmet_entry.publikimi = 1 
    AND cms_mod_lajmet_entry_language.language = 'sq' 
    AND cms_mod_lajmet_entry.renditja > 0 
ORDER by renditja ASC, date DESC LIMIT 1

(加載時間 = 0.1219)

當我拆分它們時:

SELECT 
    LajmID, 
    page_id, 
    date, 
    foto, 
    eshte_video, 
    komente 
FROM cms_mod_lajmet_entry 
WHERE cms_mod_lajmet_entry.page_id = 2  
    AND cms_mod_lajmet_entry.publikimi = 1 
    AND cms_mod_lajmet_entry.renditja > 0 ORDER by renditja ASC, date DESC LIMIT 1 

(加載時間 = 0.0801)

並單獨查詢:($t[LajmID] 是最后一個表中的 PrimaryID)

SELECT 
    title, 
    intro 
FROM cms_mod_lajmet_entry_language 
WHERE LajmID = $t[LajmID] 
    AND language = 'sq'

(加載時間 = 0.0006)

總計:0.1219 > 0.0807 (0.0801 + 0.0006)。

這看起來真的更快嗎和/或是否還有其他更快的方法。

指標如下:

第一張表:

LajmID BTREE 否 否 LajmID 36380 A
page_id 36380 A
公眾號 36380 A
克里卡 36380 A

第二個表:

LajmID BTREE 否 否 LajmID 38456 A
語言 38456 A

本來我不打算回答,但是我對這個問題的評論基本上回答了它。 我的意見總結如下:

要獲得准確的查詢執行時間,請確保使用SQL_NO_CACHE運行查詢。 這將確保查詢緩存不會扭曲結果。 第一個表上的索引沒有被使用,因為LajmID在它的頂部並且它沒有在查詢中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM