Страница: 1 |
Всем привет! Сегодня у меня вопрос... Как лучше реализовать сабж? Из одного тейбла выбрать все чего нет во втором, можно с левым джойном, можно с NOT IN , NOT EXISTS, но не нравятся они мне... Где то, когда то я видел способ более элегантный, может даже один оператор, который делает именно это. Кто знает такой способ подкиньте плиз. Но тут еще важна скорость т.к. в обоих тейблах может быть до милиона записей, потому и отказался от джойна, он слишком медленный.
попробуй так: select * from yourtable like SearchText где вместо yourtable - имя твоё таблицы, а вместо SearchText - то чему то, что ты ищишь... P.S. - соответсвенно перед этим выбираешь из первой таблицы искомый текст... другими словами сравниваешь таблицы... Мда... Наверное я не так выразился, простой запрос ,мне ни к чему , а тем более сравнивать таблицы руками из VB если есть такая штука как SQL. Я ж говорю пробовал такие вот варианты: 1. Select * from Table1 where ID not in(select * from table2) 2.Select * from Table1 where not Exists(select * from table2) 3.Select * from Left Outer Join Table2 on Table1.ID=Table2.ID where Table1.ID is Null Все это работает, но джойн слишком медленный, НОТ ИН, вполне подходит , но как я ранее сказал , где то видесл метод специально для этой ситуации, сам я его естественно не ппомню, потому и спросил. В некоторых базах для этой цели используется Except, но в MSSQL у него ИМХО другое назначение... 3-й вариант по моему самый правильный и быстрый и лучше сделать нельзя! IMHO, конечно. Я ж говорю, 3-й то как раз с JOIN самый медленный, на 100К строк у него уходит Минута, а NOT INделает все за 5 сек... Вероятно его и буду использовать. Спасибоза внимание Страница: 1 |
Вопрос: Выбор строк не имеющих аналогов в другой таблице
Добавлено: 18.02.03 17:19
Автор вопроса: MAGNUS
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Агент Смит
ICQ: 147404128
Вопросов: 12
Ответов: 128
Web-сайт:
Профиль | | #1
Добавлено: 18.02.03 17:31
Номер ответа: 2
Автор ответа:
Агент Смит
ICQ: 147404128
Вопросов: 12
Ответов: 128
Web-сайт:
Профиль | | #2
Добавлено: 18.02.03 17:34
Номер ответа: 3
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #3
Добавлено: 18.02.03 19:19
Номер ответа: 4
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #4
Добавлено: 18.02.03 20:14
Номер ответа: 5
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #5
Добавлено: 18.02.03 22:57