"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 Помиться когда-то, ещё на эпсилоне, по этому поводу уже было обсуждение