Тебе сказать сколько раз этот трактор похерил CTE ? :)
Индексы + представления тоже его рук дело? Интересно просто :-)
sasha ...
Тебе сказать сколько раз этот трактор похерил CTE ? :)
Индексы + представления тоже его рук дело?
Это ты о чём ?
Интересно просто :-)
Читай коммиты, сопоставляй ;)
--
Хорсун Влад
Это ты о чём ?
Да я там багрепорт оформил - в запросах с представлениями совсем не
используются индексы. И к стати такие чудеса. Я там видать вместо
английского це поставил русскую с. Ну и теперь какая-то фигня твориться.
Если в трекере смотреть, то заместо русской буквы вопрос. А в
s Баги на багтрекер куда слать? :-)))
s
ты эта, смотри не убей трекер. Он тока нормально стал работать, без зависаний.
--
С уважением
Кочмин Александр
Firebird Foundation associate member #257
sasha ...
Это ты о чём ?
Да я там багрепорт оформил - в запросах с представлениями совсем не
используются индексы. И к стати такие чудеса. Я там видать вместо
английского це поставил русскую с. Ну и теперь какая-то фигня твориться.
Если в трекере смотреть, то заместо русской буквы
Tonal пишет:
sasha пишет:
а если через get_context, set_context?
А как это может помочь?
WITH RECURSIVE TR AS (
SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL
and RDB$SET_CONTEXT('USER_TRANSACTION', 'Level', 0);
UNION ALL
SELECT T.*, TR.LEV + 1 AS LEV FROM Tree T, TR WHERE
Horsun Vlad пишет:
Во-вторых, это закладывается на порядок вычисления условий
Дык вычисления булевых выражений вродь сокращенные.
Причём тут это ?
Или в данном случае на порядок это не влияет?
Есть большая разница в данном случае между
AND RDB$SET_CONTEXT('USER_TRANSACTION',
Tonal ...
Horsun Vlad пишет:
Во-вторых, это закладывается на порядок вычисления условий
Дык вычисления булевых выражений вродь сокращенные.
Причём тут это ?
Или в данном случае на порядок это не влияет?
Есть большая разница в данном случае между
AND
Не вполне ясно вот что: действительно ли в булевских выражениях порядок
вычисления не определён?
Т.е. если у меня условие:
where DOC_ID is not null and MY_COOL_UDF(DOC_ID)
то MY_COOL_UDF(DOC_ID) может вызваться для аргумента null?
а почему нет? особенно если оптимизатор решит что так
Tonal ...
Ошибся чуток:
Да не, не чуток :)
Во-первых, вот так :
WITH RECURSIVE TR AS
(
SELECT T.*, 1 AS LEV FROM Tree T
WHERE PARENT_ID IS NULL
AND RDB$SET_CONTEXT('USER_TRANSACTION', 'Level', 0) = 0
UNION ALL
SELECT T.*, TR.LEV + 1 AS LEV FROM Tree T, TR
WHERE
Адназначна ;) Это уже рюшечки, есть и более важные дела
А на Адриано нельзя повесить никак? Всё равно он пашет как трактор :-)))
У меня такое впечатление что ему всё равно что делать и сколько. ;-)
sasha пишет:
Даты не понял ничего. Надо чтобы количество записей, прочитанных
сервером, было равно кол-ву записей, возвращённых запросом. А у нас
оптимизатор лажается на запросах типа WHERE 1 = 0 и перелопачивает всю
таблицу. Поэтому для всех максимальных уровней сервер будет
перелопачивать
Про [MAX LEVEL N] - мне кажеться, лучшей была бы возможность явно
указать условие завершения рекурсии.
Например: WITH RECURSIVE [ON condition]
В твоём случае как раз WITH RECURSIVE ON TR.LEV 5
Так предложи. Там в трекере можно комментарии писать. Правда Влад
наверное не обрадуется :-)
Та не, что-то вы путаете. Никакие извращения с контекстами тут не могут
помочь в принципе. Они будут делать то же самое что делал запрос без
контекстов, т.е. перебирать на листовых элементах все подэлемнты.
Запусти что-то типа SELECT * FROM TABLE WHERE 0 = 1 и посмотри
статистику - всю твою
Horsun Vlad пишет:
Во-вторых, это закладывается на порядок вычисления условий
Дык вычисления булевых выражений вродь сокращенные.
Или в данном случае на порядок это не влияет?
В-третьих, это всё равно не позволит избежать чтения записей с уровня 5
Ну дык с 6-го то читать уже не будет?
sasha ...
Про [MAX LEVEL N] - мне кажеться, лучшей была бы возможность явно
указать условие завершения рекурсии.
Например: WITH RECURSIVE [ON condition]
В твоём случае как раз WITH RECURSIVE ON TR.LEV 5
Так предложи. Там в трекере можно комментарии писать. Правда Влад
наверное не
sasha ...
Честно говоря меня бы без всяких MAX LEVEL вполне устроило бы если б
оптимизатор подправили.
Вот это и нужно 'лоббировать'
Оно конечно удобннее писать с MAX LEVEL или
условием в заголовке CTE, но не более.
Именно - не более ;)
--
Хорсун Влад
Вот это и нужно 'лоббировать'
Дак а кто я такой чтоб лоббировать? :-)
Я вон Цизару никак не могу доказать что так с дбкеями проблема. До сих
пор ему кажеся что там всё в шоколаде...
sasha ...
Адназначна ;) Это уже рюшечки, есть и более важные дела
А на Адриано нельзя повесить никак? Всё равно он пашет как трактор :-)))
Тебе сказать сколько раз этот трактор похерил CTE ? :)
Или кто 'виноват' в юникодных 'проблемах' ?
У меня такое впечатление что ему всё равно
Честно говоря меня бы без всяких MAX LEVEL вполне устроило бы если б
оптимизатор подправили. Оно конечно удобннее писать с MAX LEVEL или
условием в заголовке CTE, но не более.
а если через get_context, set_context?
А как это может помочь?
sasha пишет:
а если через get_context, set_context?
А как это может помочь?
WITH RECURSIVE TR AS (
SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL
and RDB$SET_CONTEXT('USER_TRANSACTION', 'Level', 0);
UNION ALL
SELECT T.*, TR.LEV + 1 AS LEV FROM Tree T, TR WHERE PARENT_ID =
Dmitry Voroshin ...
Horsun Vlad ...
WITH RECURSIVE [MAX LEVEL N]
но баба яга была против
А что нам говорит стандарт?
Насколько я помню, там такого нет
И это был главный аргумент Бабы Яги?
Ужо не помню. Но и в трекере ничё не вижу ;)
--
Хорсун Влад
Но и в трекере ничё не вижу ;)
Как-то даже не удобно твои идеи за свои выдавать ;-)
sasha ...
Но и в трекере ничё не вижу ;)
Как-то даже не удобно твои идеи за свои выдавать ;-)
Они не мои :)
--
Хорсун Влад
Они не мои :)
Написал. Только не MAX LEVEL, а MAX DEEP - мне так больше нравится ;-)
sasha ...
Они не мои :)
Написал. Только не MAX LEVEL, а MAX DEEP - мне так больше нравится ;-)
Нафига нам новое ключевое слово ?
--
Хорсун Влад
Нафига нам новое ключевое слово ?
Я не знал что LEVEL ключевое. Нельзя им просто словом быть?
В общем тебе виднее ;-)
Oleg Deribas
[EMAIL PROTECTED]
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
Hello,
Dmitry Voroshin said the following on 30.05.2007 12:02:
Что за лажа с кодировкой...
Включи запретить использование 8-битных символов в заголовках
Счас проверим. Снёс свой финдовый
Я тут мудрил, химичил, деже небольшой Featuire request в трекер написал,
но тем не меннее нормального пути так и не нашёл.
Задача простая - ограничить глубину возвращаемого дерева.
Если написать так:
WITH RECURSIVE TR AS (
SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS NULL
UNION
sasha ...
Я тут мудрил, химичил, деже небольшой Featuire request в трекер написал,
но тем не меннее нормального пути так и не нашёл.
Задача простая - ограничить глубину возвращаемого дерева.
Если написать так:
WITH RECURSIVE TR AS (
SELECT T.*, 1 AS LEV FROM Tree T WHERE PARENT_ID IS
WITH RECURSIVE [MAX LEVEL N]
но баба яга была против
О, так это ж то что надо!!! А кто она, эта Яга? :-)
sasha ...
WITH RECURSIVE [MAX LEVEL N]
но баба яга была против
О, так это ж то что надо!!! А кто она, эта Яга? :-)
Она в отпуске ;)
--
Хорсун Влад
Эх, что-то не весело совсем :-(
Horsun Vlad [EMAIL PROTECTED]
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
sasha ...
WITH RECURSIVE [MAX LEVEL N]
но баба яга была против
А что нам говорит стандарт?
sasha wrote:
Может у кого есть идея как ещё такой CTE написать чтобы быстрее было?
А мож в таблицу добавить поле DEEP и на триггерах его заполнять?
ну а потом в условие его пихать
Dmitry Voroshin ...
Horsun Vlad ...
sasha ...
WITH RECURSIVE [MAX LEVEL N]
но баба яга была против
А что нам говорит стандарт?
Насколько я помню, там такого нет
--
Хорсун Влад
А мож в таблицу добавить поле DEEP и на триггерах его заполнять?
ну а потом в условие его пихать
У нас такое не прокатит.
38 matches
Mail list logo