Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не включаются индексы при обращении к родительской таблице
|
|||
|---|---|---|---|
|
#18+
Postgres 8.0 Есть корневая таблица и несколько наследников. Подключаю ее по left join к запросу. Индексы не включаются! Они есть и у родительской и у дочерних таблиц. Если подключать дочерние сами по себе все работает. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 16:29 |
|
||
|
Не включаются индексы при обращении к родительской таблице
|
|||
|---|---|---|---|
|
#18+
novillPostgres 8.0 Есть корневая таблица и несколько наследников. Подключаю ее по left join к запросу. Индексы не включаются! Они есть и у родительской и у дочерних таблиц. Если подключать дочерние сами по себе все работает. Почему? Чё? Ещё раз вопрос и помедленее, пожалуста. "подключать дочерние сами по себе" - это что означает? И "корневая" это как? "Подключаю ее по left join к запросу" тоже интересно. Если серьёзно, то показывай: -структуру таблиц; -существующие индексы; -планы выполнения; тогда может и получится ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2005, 17:35 |
|
||
|
Не включаются индексы при обращении к родительской таблице
|
|||
|---|---|---|---|
|
#18+
CREATE TABLE table1 ( id int4, ...); CREATE INDEX table1_id ON parent_t USING btree (id); CREATE TABLE parent_t ( id int4); CREATE INDEX parent_t_id ON parent_t USING btree (id); CREATE TABLE child1 ( f1 string) inherits parent_t; CREATE INDEX child1_id ON child1 USING btree (id); CREATE TABLE child1 ( f2 date) inherits parent_t; CREATE INDEX child2_id ON child2 USING btree (id); select ... from table1 ... left join parent_t on table1.id=parent_t.id План Merge Left Join (cost=303.09..533.09 rows=15000 width=8) Merge Cond: ("outer".id = "inner".id) -> Sort (cost=69.83..72.33 rows=1000 width=4) Sort Key: table1.id -> Seq Scan on table1 (cost=0.00..20.00 rows=1000 width=4) -> Sort (cost=233.26..240.76 rows=3000 width=4) Sort Key: public.parent_t.id -> Append (cost=0.00..60.00 rows=3000 width=4) -> Seq Scan on parent_t (cost=0.00..20.00 rows=1000 width=4) -> Seq Scan on child1 parent_t (cost=0.00..20.00 rows=1000 width=4) -> Seq Scan on child2 parent_t (cost=0.00..20.00 rows=1000 width=4) Озадачивают последние три строчки в плане выполнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 09:49 |
|
||
|
Не включаются индексы при обращении к родительской таблице
|
|||
|---|---|---|---|
|
#18+
novill Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Однако. Скажем прямо, никогда не использовал наследуемые таблицы. А проблема, судя по всему, в этом. Если я правильно понял план, то твой запрос эквивалентен такому (не знаю только, что у тебя в select-части): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Переделай, пожалуста, мой запрос со своими полями и покажи план этого запроса. Есть подозрение, что они будут одинаковы. Для оптимизации, скорее всего, прийдётся отказываться от наследуемых таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 11:51 |
|
||
|
Не включаются индексы при обращении к родительской таблице
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Мне кажется, что в обоих этих запросах можно избавиться от внешней сортировки, если использовать вместо тупого APPEND аналог MERGE JOIN. Но ... либо а) я ошибаюсь, и этого сделать нельзя, либо б) постгрес пока так делать не умеет, либо в) у нас не получилось его запинать (это маловероятно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 12:45 |
|
||
|
Не включаются индексы при обращении к родительской таблице
|
|||
|---|---|---|---|
|
#18+
Да, индексов на всю иерархию (или хотя бы на подвыборку) явно не хватает. Точно так же как и возможности построить п-кей на всю иерархию (с тем, чтобы завязаться F-Key-ем к ней). Т.е. изюм с червячком. Придется вместно иерархии юзать "звезду" (там, в свою очередь будет не хватать "инедкса на поля 2 таблиц, связанных 1->1"). Единственно, что "честно наследуется" (кроме полей) -Чек констрайнты (я даже подумывал попытаться вызывать чеком в корне (на поле "п-кея") ф-ю, которая будет апдейтить ключи на стороне некой "вторичной ко всей иерархии" таблички - вместо вторичного ключа (UPDATE CASCADE), и возвращать по отработке True. Но чек не срабатывает при удалении - не сделаешь на ON DELETE). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2005, 13:33 |
|
||
|
|

start [/forum/topic.php?fid=53&gotonew=1&tid=2007398]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 432ms |

| 0 / 0 |
