mysql / matlab: оптимизировать запрос - удаление дат из списка - PullRequest
1 голос
/ 07 сентября 2011

У меня есть таблица с ~ 3M строк. Это строки date, time, msec и некоторые другие столбцы с данными типа int. Некоторые неизвестные части этих строк считаются «недействительными» на основании их существования в отдельной таблице outages (на основе диапазонов дат).

В настоящее время запрос выполняет выборку *, а затем использует огромный WHERE для удаления недопустимых диапазонов дат (много «и нет» (RecordDate> '2008-08-05' и RecordDate <'2008-08-10') ' ) и так далее. Это исключает любую возможность использования индекса. </p>

Я ищу лучший способ ограничить результаты. В настоящее время выполнение запроса занимает несколько минут.

1 Ответ

0 голосов
/ 07 сентября 2011
DELETE b FROM bigtable b
INNER JOIN outages o ON (b.`date` BETWEEN o.datestart AND o.dateend)
WHERE (1=1)  //In some modes MySQL demands a `where` clause or it will not run.

Убедитесь, что у вас есть индекс для всех полей, участвующих в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...