2013-04-22 5 views
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 Мне нужно Всего данных, которые создали_создан вчера. Для каждого файла tempor_search_table может быть несколько записей в search_meta. Поэтому нам нужно выбрать последнее поле из search_meta и проверить созданную дату вчера, а свойство_status находится на рассмотрении. если да, то мы можем подсчитать число. Если в search_meta нет данных, доступных для записи в файле временного_значения, нам не нужно подсчитывать эту строку в наших результатах.Необходимо улучшить производительность sql

Здесь я прикрепляю свои данные 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)) 

Заранее спасибо.

+0

Есть ли какие-либо индексы на двух таблицах? –

+0

Извините, может быть, я не понял ваш вопрос. Вы имели в виду связь между таблицей временным_источником_и_и_и_и_и_и_и_и1а? если «да», то да. post_id in tempor_search_table - это внешний ключ (search_id) в таблице serach_meta. –

+0

Ну, там есть коррелированный подзапрос. –

ответ

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 
+0

Можете ли вы опубликовать мне учебник по индексированию DB? –

+0

@MonirulIslam Вы сначала проверили этот SQL? –

+0

Да, я протестировал. но кажется медленным :( –

Смежные вопросы