![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Виснет запрос. [D7, IB6.x, MSSQL]
keymaster © (2006-03-01 11:36:00)Задача - две таблицы, связанные поля.
Выбрать несовпадающие.
Запрос такой:
SELECT TB1.ID, TB.F1, TB1.F2, TB1.F3
FROM TB1
INNER JOIN TB2 ON TB1.ID <> TB2.ID
Результат: запрос что-то из базы тащит,
но выполняется бесконечно.
Проблема одинакова и в IB и в MSSQL
Чем лечить?
evvcom (2006-03-02 09:39:00) [1]Телепаты, блин :)
ANB (2006-03-01 17:53:00) [2]not exists. И проверить наличие индексов по полям связи.
Кщд (2006-03-01 14:18:00) [3]
> только тогда уж не INNER, а FULL OUTER JOIN
конечно FULL :)
stone (2006-03-01 14:14:00) [4]
> INNER JOIN TB2 ON TB1.ID = TB2.ID
только тогда уж не INNER, а FULL OUTER JOIN
Johnmen (2006-03-01 14:14:00) [5]>Кщд © (01.03.06 14:09) [8]
И что будет? Холодное пиво? :)))
Кщд (2006-03-01 14:09:00) [6]FROM TB1
INNER JOIN TB2 ON TB1.ID = TB2.ID
where
TB1.ID is null
or
TB2.ID is null
Ega23 (2006-03-01 13:50:00) [7](Количество записей в первой таблице) в степени (количество записей в другой таблице) минус (Количество записей в первой таблице) уножить на (количество записей в другой таблице)
Вроде так...
Ega23 (2006-03-01 13:50:00) [8]Это я про результат запроса
Vlad (2006-03-01 13:34:00) [9]
> keymaster © (01.03.06 11:36)
что-то я не понял смысл твоего запроса...
Выбрать записи из одной таблицы, которых нету в другой - это я понимаю.
Но ты делаешь join, т.е. фактически, перемножаешь записи из одной и другой таблицы. Результат, естественно будет огромным. А смысл что-то не очень ясен.
> Тестировалось на 10 записях
а во второй таблице сколько?
Johnmen (2006-03-01 13:30:00) [10]Тогда "Не верю" (с)
keymaster (2006-03-01 13:06:00) [11]Тестировалось на 10 записях
Johnmen (2006-03-01 11:51:00) [12]Выполняется не бесконечно, а очень долго. Записей многовато....
keymaster (2006-03-01 11:49:00) [13]В селекте опечатка, правильно:
SELECT TB1.ID, TB2.F1, TB1.F2, TB1.F3