Игорь Горбонос wrote:

    SELECT
     msg."tid" AS "mid",
     msg."gid",
     0         AS "tid",
     0         AS "pid",
     msg."dte",
     '<<Темы нет в локальной БД>>' AS "usernick",
     msg."subject",
     3 AS "uclass",
     -1  AS "uid", 0  AS "ismarked", 0  AS "isread"
    FROM
     "messages" msg
    WHERE
     msg."mid" IN
      (SELECT
       Min(msga."mid")
      FROM
       ("messages" msga
        LEFT JOIN "messages" msgb on msga."pid" = msgb."mid")
        LEFT JOIN "messages" msgc on msga."tid" = msgc."mid"
      WHERE
       msga."tid" <> 0 AND msgb."mid" IS Null AND msgc."mid" IS Null
        AND msga."mid" IN (много чисел)       GROUP BY
       msga."tid")

Переписать несложно, но результат не будет работать на MSSQL :-)

Версия сервера какая?
FileVersion : WI-V2.0.1.12810
Как смотреть точнее?

Точнее не надо.

Для каждой записи внешнего запроса выполняется подзапрос.
хорошо но поле то Not Null, а я пытаюсь сравнить с Null и если указать явный нулл вместо подзапроса то все выполняеться без задержек. Может это как-то учитывать?

Сейчас это никак не учтешь, т.к. подзапрос выполняется в коррелированном виде.


--
Дмитрий Еманов

Ответить