|
|
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Имеем образно запрос: Код: plsql 1. 2. 3. Почему файр дергает TABLE B и для первых 1000000 записей? Вроди логично насчитать и прыгать через лимон записей из А а потом начать джоинить и таблицу B чтоб выдать разалт сет. Пользуюсь FB2.5. Будут улучшения в 3.0? Или я косячу и мыслю неправильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 20:20:32 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin MarcociПочему файр дергает TABLE B и для первых 1000000 записей? На случай если в ней по 100500 записей на каждую первую из А. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 20:26:32 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
мда... спасибо, понял! ошибся мыслю что если лефт и у меня одна запись из Б на каждую из A то должно быть чики пики. обойдусь вложенным селектом наподобие Код: sql 1. 2. 3. или есть другие методы оптимизации (если из B надо несколько полей)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 20:45:20 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin MarcociВроди логично насчитать и прыгать через лимон записей из А а потом начать джоинить и таблицу B чтоб выдать разалт сет.Тогда и запрос должен быть другим. Типа такого: Код: sql 1. 2. 3. 4. 5. 6. (но у него, повторюсь, и результат будет СОВСЕМ другим! Ибо кляузы fired / rows применяются после к итоговому результату, который уже после всего получен). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 20:52:23 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin Marcociили есть другие методы оптимизации (если из B надо несколько полей)?"если из B надо несколько полей" - что мешает их перечислить в select-секции ? зы. пардон, не увидел ваш же ответ на первый вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 20:54:06 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
но у него, повторюсь, и результат будет СОВСЕМ другим! так мне этого и надо :), например выдать название города после чего выбрали маршруты: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 21:07:21 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
А что-то наподобие имеет смысл? (если бы поддерживал файрбирд) или бред? Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 21:22:30 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin MarcociА что-то наподобие имеет смысл? (если бы поддерживал файрбирд) или бред? Код: sql 1. 2. 3. 4. Получите облом вида multiple rows in singleton select, если только "B" не является родительской по отношению к "А". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 21:25:53 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci> А что-то наподобие имеет смысл? (если бы поддерживал файрбирд) или бред? 1. Имеет смысл. 2. Это поддерживается уже сейчас. 3. Так можно вытащить только 1 запись из B, несколько не получится. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 21:43:51 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
один я вижу, что его запрос никак нельзя выполнить в ФБ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 22:41:32 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Ты про то, что более одного поля/записи не вытащить или о чём? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 22:58:14 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, именно про не более одного поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 08:03:04 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Привет, Дмитрий! Да, хотелось витащить именно несколько полей (или буду делать уже с нестед селект, как выше). Тестирую на большую базу для одного веб проэкта где данные показываю постранично, тоесть с skip. Если бы было возможность вытащить несколько полей из Б, было бы отлично, а не только одно поле как сейчас. - D. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 12:25:21 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Кажется, фича про вытаскивание нескольких полей подзапросом уже есть в трекере. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 19:37:29 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Симонов Денис> есть, есть... это называется LATERAL JOIN CORE-3435 ХЗ, лично мне не понравился ни сама фича, ни тикет и его обсуждение. Я имел в виду несколько другое - обычный запрос с выборкой поля (который есть сейчас), но ползволяющий выбрать более одного поля (соответственно, "раздвигая" выборку в ширину): Код: sql 1. 2. 3. 4. 5. 6. P.S. Что говорит на сей счёт стандарт - без понятия. P.S.S. В трекере есть тикет именно с "моим" вариантом, IIRC. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 20:34:25 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, LATERAL JOIN есть в стандарте, уж на сколько он крив другой вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 20:57:34 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Симонов Денис> LATERAL JOIN есть в стандарте Только вот речь шла не о нём... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 21:09:50 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Вообще, поиск в трекере - это, конечно, ппц... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2014, 21:24:24 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
А вообще, было бы отлично научить оптимизатор пошаманить на натуре джоина. Тоесть определить может ли джоин в принципе вернуть несколько записей или максимум одну. Вот в селекте: Код: sql 1. 2. 3. Если B.FIELD1 первичный ключ (тоесть никак больше одного запись из B для каждой из A) то не надо сканировать еще и таблицу B при скипе милиона записей. Это наверное отразится и на производительность обычных селектов без скипа. Искать еще записи после первой найденной или отбой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2014, 12:27:08 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin MarcociА вообще, было бы отлично научить оптимизатор пошаманить на натуре джоина. Тоесть определить может ли джоин в принципе вернуть несколько записей или максимум одну. Вот в селекте: Код: sql 1. 2. 3. Если B.FIELD1 первичный ключ (тоесть никак больше одного запись из B для каждой из A) то не надо сканировать еще и таблицу B при скипе милиона записей. Это наверное отразится и на производительность обычных селектов без скипа. Искать еще записи после первой найденной или отбой. Код: sql 1. 2. 3. 4. Понятно что это не совсем left join но всё же усложняет алгоритм действий для оптимизатора ( может быть и is null )? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 12:07:38 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
авторПонятно что это не совсем left join но всё же усложняет алгоритм действий для оптимизатора Не понял мысль. where B.FIELD здесь ограничивает выборку из B, но суть вопроса не в том. Вот в реальных сценариях есть куча (большенство?:) запросов связки "смежных" таблиц по первичному ключу. Это как-бы результат "нормализации" данных. Тоесть "главная" выборка идет из "главной" таблицы а потом идут связки с дополнительные таблицы. Например какой-то список документов Код: sql 1. 2. 3. 4. Имеем КЛИЕНТЫ и УСЛУГИ как косвенные таблицы, для показа дополнительной инфы юзеру. Так вот, когда skip милион, движок сканирует еще и эти "ненужные" дополнительные таблицы что создает определенные тормоза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 14:16:48 |
|
||
|
skip & left join
|
|||
|---|---|---|---|
|
#18+
Dorin MarcociТак вот, когда skip милион, движок сканирует еще и эти "ненужные" дополнительные таблицы что создает определенные тормоза. Оптимизатор можно оптимизировать до бесконечности. Если же смотреть на вещи реально, то данная ситуация примитивно обходиться с помощью DT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 19:28:19 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38631057&tid=1563629]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 375ms |

| 0 / 0 |
