|
|
|
| Помогите пожалуйста
есть запрос который работает очень медленно...
нужно его ускорить
вот запрос который выполняется 30 секунд
UPDATE `userlist` SET `status` = 'tested', `limit` = '0' WHERE `status` = 'works' AND (SELECT COUNT(*) FROM `visitors` WHERE `where` = `userlist`.`url` AND DATE(datetime) = ADDDATE(DATE(NOW()),-1) LIMIT 0 , 3) < 3
|
написал вот такой запрос упростив, но запускать боюсь
правильно ли я сделал или можно как то подругому еще сделать???
UPDATE `userlist` AS `u`
LEFT JOIN (
SELECT `where`, COUNT(*) AS `count`
FROM `visitors`
WHERE DATE(`datetime`) = ADDDATE(DATE(NOW()), -1)
GROUP BY `where`
ORDER BY NULL
) AS `v` ON `u`.`url` = `v`.`where`
SET `u`.`status` = 'tested', `u`.`limit` = '0'
WHERE `u`.`status` = 'works' AND IFNULL(`v`.`count`, 0) < 3
|
может есть другие варианты
база растет и все медленнее и медленнее работает...
книги читал но не помогли, там о таком ни слова нет... | |
|
|
|
|
|
|
|
для: lrlr
(16.03.2011 в 00:59)
| | итак...
второй запрос набрался смелости и проверил
мозг не подвел
он работает и время его выполнения 0.1 сек
напомню что первый выполнялся 30-40 сек
но вот на счет того правильно ли он в базе все обновил понять не могу потому что слишком большая база
нужен ответ на вопрос правильно ли я составил второй запрос?
прошу потратить свое время всем кто хорошо знает данную тему, потому как вопрос не детский... | |
|
|
|
|
|
|
|
для: lrlr
(16.03.2011 в 02:29)
| | Хм... ну вроде правильно, разбирал-разбирал никаких ошибок не увидел, все вроде по делу. Только ORDER BY NULL смущает - думаете ускорит работу? | |
|
|
|