2017-08-12 10 views
1

存在しませんすべてのスキーマを持たずにフィールドは、私はこのクエリを実行する場合(MySQLの)

私は値 cat_disabledセットとはmeta_keyはありません製品を取得するには、このクエリを最適化するにはどうすればよい
SELECT 
    wp_posts.ID, 
    wp_posts.post_title, 
    wp_posts.post_status, 
    wp_postmeta.meta_key 
FROM 
    wp_posts 
    LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
WHERE 
    post_type = 'product' AND 
    wp_postmeta.meta_key != 'cat_disabled' AND 
    wp_postmeta.meta_value != 'on' 

答えて

0
SELECT 
    ID 
FROM 
    wp_posts 
WHERE 
    ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = "cat_disabled") 
    AND post_type = "product" 
    AND post_status = "publish" 
1

といくつかのデータへテスト、これは提案です:

SELECT 
    wp_posts.ID, 
    wp_posts.post_title, 
    wp_posts.post_status, 
    wp_postmeta.meta_key 
FROM 
    wp_posts 
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
WHERE 
    post_type = 'product' AND 
    wp_postmeta.post_id NOT IN 
    (SELECT post_id 
    FROM wp_postmeta 
    WHERE meta_key = 'cat_disabled' AND 
     meta_value = 'on') 
+0

私に私のクエリと同じ657840件のレコードを与え、私は(19359から5348)を期待してい – 3zzy

+1

は、それを手に入れただけのおかげでとにかく、DISTINCT'をSELECT 'しなければならなかった記録:) – 3zzy

関連する問題