shoorick: (Default)
shoorick ([personal profile] shoorick) wrote2012-02-13 06:54 pm
Entry tags:

Майэскьюэль не понял подзапроса

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

P. S. Понятно, что я могу найденное на первом шаге тупо перебрать в цикле, написав какой-нибудь перлоскрипт, однако хочется сделать как-то изящнее.

[identity profile] slach.livejournal.com 2012-02-14 05:11 am (UTC)(link)
нет что вы... ничего не случилось =) продолжайте дальше исходить слюной =)
Монти и Петя Зайвцев, по совету Момджана
начали приносить лобковые скальпы под портрет Ларри Эллисона и Стива (не джобс) Болмера ;-))

[identity profile] anspa.livejournal.com 2012-02-14 05:26 am (UTC)(link)
кхм, совет не по адресу.

[identity profile] slach.livejournal.com 2012-02-15 11:20 am (UTC)(link)
прошу прощения, просто неверно воспринял эмоциональную окраску!

[identity profile] anspa.livejournal.com 2012-02-15 03:12 pm (UTC)(link)
ок, принято! просто я был Oracle dba с 15-летним стажем. и уже несколько лет использую MySQL для всей своей работы с данными, а оракл как раз забросил. =)