Майэскьюэль не понял подзапроса
Странности творятся. Почитав мануал, обращаюсь к друпаловой БД, ищу дубликаты адресов в таблице с 7500 строками:
P. S. Понятно, что я могу найденное на первом шаге тупо перебрать в цикле, написав какой-нибудь перлоскрипт, однако хочется сделать как-то изящнее.
MySQL достаточно резво выдаёт ответ из почти семи десятков строк. Делаю запрос с подзапросом, чтоб выбрать номера узлов с найденными на предыдущем шаге дублями:SELECT `alias` FROM `PREFIX_url_alias` GROUP BY `language`, `alias` HAVING COUNT(*)>1;
В итоге MySQL тяжко задумывается — вот уж 20 минут непонятно, что делает. ПосмотрелSELECT `source` FROM `PREFIX_url_alias` WHERE `alias` IN ( SELECT `alias` FROM `PREFIX_url_alias` GROUP BY `language`, `alias` HAVING COUNT(*)>1 );
SHOW CREATE TABLE
— по полю `alias`
строится индекс. Чё ему ещё надо-то?P. S. Понятно, что я могу найденное на первом шаге тупо перебрать в цикле, написав какой-нибудь перлоскрипт, однако хочется сделать как-то изящнее.
no subject
то оно априори на подзапросах тормозить будет
EXPLAIN погляди ... можешь удивиться
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
можно сделать temp table, выбрав туда ключи дубликатов. и уже из той таблицы попробовать сделать alias in (select ...
в обеих таблицах (временной и исходной) ключевое поле (alias) должны быть проиндексированы.
(no subject)