1
Table temporary_search_table
post_id,property_status, property_address,....more 30 field

Table search_meta
meta_id,search_id,status,created_date

OK、created_date が昨日の合計データが必要です。各 temporary_search_table データに対して、search_meta 内に複数のエントリがある場合があります。したがって、search_meta から最後の 1 つのフィールドを選択し、作成日が昨日であり、property_status が保留中であることを確認する必要があります。はいの場合、数を数えることができます。temporary_search_table に入力するための search_meta に利用可能なデータがない場合、結果内のその行をカウントする必要はありません。

ここに私のSQLデータを添付しています。その作業ですが、30000行の場合は時間がかかります。

SELECT COUNT(id) FROM temporary_search_table 
    WHERE property_status = 'pending' AND (1 = (SELECT DATEDIFF(NOW(), created_date) 
    FROM search_meta WHERE post_id = search_id ORDER BY created_date DESC LIMIT 0,1 ))

前もって感謝します。

4

1 に答える 1

0

テーブルのインデックスをチェックする以外に、相関サブクエリを使用せず、代わりに直接結合を使用する方がよいでしょう。

SELECT COUNT(id) 
FROM temporary_search_table 
INNER JOIN search_meta ON post_id = search_id
WHERE property_status = 'pending' AND DATEDIFF(NOW(), created_date) = 1
ORDER BY created_date DESC 
LIMIT 1
于 2013-04-22T10:19:18.070 に答える