![]() |
|
Модераторы: skyboy |
![]()
|
|
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: нет Всего: 34 |
Имею список текстовых величин в виде файла. Имею таблицу в базе, одно из полей которой сорержит такие данные. Нужно проверить какие из величин списка отсутствуют в таблице. Простая задача, а все решения получаются ну очень долгоиграющие. Пока додумался до того, чтобы загрузить данные из файла во временную таблицу (это удобно еще и потому, что, помимо сравниваемых величин имеются еще какие-то). Вот примерно как выглядят две таблицы:
Но как теперь, сравнив содержание полей symbol, получить список значений отсутствующих в permanentTable? -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
поясни подробнее. лучше на примере. тебе надо найти записи в таблице, в которой в поле fieldP1 находится значение, отсуствующее в поле fielDP2 во всех записях?
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 6 Всего: 401 |
Единственный вариант, который вижу я - это что-то вроде
Наверное, хорошо бы permanentTable.symbol сделать индексом... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| _Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: нет Всего: 34 |
Надо найти значения tempTable.symbol отсутствующие во всех записях permanentTable.symbol. Например если
То результатом поиска должно быть значение AБЦДЕ -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 20 Всего: 40 |
select * from temptable where symbol not in (select symbol from permanantTable)
другой вариант (чуть быстрее) select * from tempTable where not exists (select * from permanentTable where permanentTable.symbol=tempTable.symbol); третий вариант - самы быстрый (при наличии индексов) select t.* from t tempTable left join p permanentTable using (symbol) where p.symbol is null; Это сообщение отредактировал(а) Бонифаций - 23.11.2007, 13:47 -------------------- Бонифаций. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: нет Всего: 34 |
SelenIT, работает. Берет где-то 8 минут. Многовато, но переживу на этот раз - свое время дороже. Надо бы еще разобраться как работает
Бонифаций, тоже работает, берет 9 минут. Собственно, это то, с чето я начинал, но почему-то время жрало бесконечно. Может я в чем-то ошибся в первый раз. Спасибо! -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 20 Всего: 40 |
а сколько записей?
-------------------- Бонифаций. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: нет Всего: 34 |
Записей в основной таблице порядка трех миллионов, во временной - не больше сотни. Но тему пожалуй стОит закрыть т.к. практическая проблема решена. Да и пример мой в начале темы сильно упрощенный. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |