Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
Вот есть такой запрос:
Неактивен
UNION ALL - это читерство
А если серъёзно - то это ИМХО всё равно что долбить базу циклом, запросами вида -
Неактивен
А зачем Вам такое странное условие в in?
SELECT `name` FROM table WHERE id = 3;
так не лучше?
Если Вам нужно получить количество таких записей, то проще так: SELECT count(*) FROM table WHERE id = 3;
Неактивен
Даже проверил скорость на полутысяче юнионов:
(565 rows returned, query time 3.2373 seconds)
МНе не количество надо. Мне надо совместить две выборки из разных баз данных, причём могут попадаться дубликаты, типа вышеперечисленных
Отредактированно Бананище (03.02.2012 02:20:47)
Неактивен
Бананище написал:
UNION ALL - это читерство
А если серъёзно - то это ИМХО всё равно что долбить базу циклом, запросами вида -...WHERE id = 3
А значит ресурсоёмко
Есть иные варианты?
Если у вас 4 идентичные строки в таблице, то запрос
Неактивен
Бананище написал:
Мне надо совместить две выборки из разных баз данных, причём могут попадаться дубликаты, типа вышеперечисленных
Что-то я не улавливаю суть. На примере, покажите, что есть и что вы хотите получить.
Неактивен
В том-то и дело, что идентичных строк - нет. Опишу вопрос более предметно:
Есть скажем, база логов. В базе логов, одно из полей - это идентификаторы пользователей. Ясное дело, что в выборке логов - могут попадаться логи с одинаковыми значениями данных полей.
Так вот, мне надо вытащить 100500 логов из базы (как я уже сказал - в них будут попадаться и одинаковые идентификаторы) и составить такой запрос к другой базе (в другой базе - хранятся имена), который вернёт мне идентичное количество имён оттуда, причём верно сопоставленных. Обе базы - находятся на разных серверах.
Учитывая объём данных, с которым придётся весьма активно работать программе, - использование юнионов и подзапросов - фатально.
Неактивен
Как вариант, во второй базе создаете временную таблицу в памяти. Передаете в неё 100500 идентификаторов values(),(),().. Делаете join с таблицей имен, получаете нужный вам вариант.
Но есть подозрение, что "верное сопоставление" лучше делать в программе при выдаче результата.
Неактивен