"Dmitry Yemanov" <[EMAIL PROTECTED]> сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]

Пипец, а не запрос.
В оригинале таблица:
CREATE TABLE "messages" (
   "dte"          TIMESTAMP NOT NULL,
   "gid"          INTEGER NOT NULL,
   "ismarked"     SMALLINT DEFAULT 0 NOT NULL,
   "isread"       SMALLINT DEFAULT 0 NOT NULL,
   "message"      BLOB SUB_TYPE 1 SEGMENT SIZE 80,
   "mid"          INTEGER NOT NULL,
   "pid"          INTEGER NOT NULL,
   "subject"      VARCHAR(128),
   "tid"          INTEGER NOT NULL,
   "uclass"       INTEGER,
   "uid"          INTEGER NOT NULL,
   "usernick"     VARCHAR(50),
   "article_id"   INTEGER,
   "readreplies"  SMALLINT DEFAULT 0 NOT NULL,
   "name"         VARCHAR(160)
);
в ней храниться древообразная структура сообщений с форума RSDN а сам запрос, опуская числа в IN :
INSERT INTO "messages" (
    "mid", "gid", "tid", "pid",
    "dte", "usernick", "subject",
    "uclass", "uid", "ismarked", "isread"
   )
    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")


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

Статистика по индексу?
Selectivity 0.0001000

Мне кажеться что при выполнении запроса сначала разворачиваеться in, а потом выполняеться подзапрос, может правильнее было-бы выполнить подзапрос, а потом результаты развернуть в in ?

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


PS Помиться когда-то, ещё на эпсилоне, по этому поводу уже было обсуждение

Ответить