簡體   English   中英

為什么我的嵌套查詢會使SQL Server減慢這么多?

[英]Why does my nested query slow the SQL server so much?

以下是我的查詢。 從不到30種可能的結果中提取了12個結果用了8秒。 這里發生了什么? 服務器確實非常快,可以處理一些非常復雜的查詢,但事實並非如此……

SELECT meta_value FROM wp_postmeta where post_id IN
  (SELECT meta_value from wp_postmeta WHERE post_id IN 
     (select id from wp_posts WHERE post_type = 'ads') 
      AND meta_key like 'image1')

在您的情況下,將對WHERE中的每一行執行選擇。 將其放在FROM部分中。 像這樣。

SELECT meta_value 
FROM wp_postmeta t1
     JOIN wp_postmeta t2 ON t2.meta_value=t1.post_id AND meta_key like 'image1'
     JOIN wp_posts t3 ON t3.id=t1.post_id AND post_type = 'ads' 

如果您不需要通配符,則可以將LIKE更改為=(等於),具體取決於數據庫和查詢優化器,這可能會產生影響。 另外,為什么還要嵌套兩次SELECT meta_value? 查詢不應該是(沒有外部子句):

SELECT meta_value FROM wp_postmeta WHERE meta_key='image1' AND post_id IN (
SELECT id FROM wp_posts WHERE post_type = 'ads') 

要么

SELECT a.meta_value FROM wp_postmeta a WHERE a.meta_key='image1' AND EXISTS (
SELECT * FROM wp_posts b WHERE b.post_type = 'ads' AND b.id=a.post_id) 

要么

SELECT a.meta_value FROM wp_postmeta a JOIN wp_posts b ON b.id=a.post_id WHERE 
a.meta_key='image1' AND b.post_type = 'ads'

祝好運!

暫無
暫無

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

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