|
|
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#18+
Выбегалло Код: plaintext 1. 2. Инсерт с ошибкой? Поля наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 23:49 |
|
||
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#18+
ВыбегаллоПеределал процедуру на повторяющтиеся значения в f1 : Код: plaintext 1. 2. Поле f2 все равно уникальное, информикс поменял порядок предикатов в фильтре. Попробуй в поле f2 положить mod 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2005, 23:55 |
|
||
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#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. 24. 25. 26. 27. 28. 29. В таком вот аксепте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2005, 01:02 |
|
||
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#18+
win-kim Код: plaintext 1. 2. 3. Код: plaintext 1. Я думаю, что запрос на соединении двух таблиц по 20 тыс строк, который выполняется пол минуты это неправильно. По одному полю соединение таблиц в 1 млн строк идет быстрее. Все таки нужно как то сделать быстрее. Зависит от избирательности фильтра. В предельном случае у вас будет декартово произведение таблиц в 400 миллионов записей - вполне может и больше полминуты выполняться :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 19:58 |
|
||
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#18+
ids 9.50tc1 (10.0tc1) OPTCOMPIND 2 DS_NONPDQ_QUERY_MEM 128 # по умолчанию, меньше к сожалению не сделать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2005, 20:13 |
|
||
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, секвентал скан на больших таблицах (не умещающихся в памяти) - очень дорогостоящая операция (чтение с диска) и её следует избегать при оптимизации. Тот же коленкор с DYNAMIC HASH JOIN - сервер при каждом запросе строит индекс! Как же неоптимально должны быть созданы индексы (или вообще не созданы) что бы планировщик решил сначала создать индекс, а потом делать выборку... (Народ, интересно, читал статейку An Overview of the IBM Informix Dynamic Server Optimizer ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 18:39 |
|
||
|
Как правильно построить индексы для соединения двух таблиц по двум полям?
|
|||
|---|---|---|---|
|
#18+
An ogre is like an onion. Дальше мое имхо, можете спокойно не верить, просто попытайтесь задуматься. 1. Читаем всегда страницами (либо 2,4,8...кб). 2. Оптимизатор строит множество планов запросов и выбирает с наименьшей стоимостью. 3. Стоимость плана вычисляется в чтениях (см. пункт 1). Оптимизатор не волнует кеширование (легко понять почему). 4. Стоимость секскана таблички размером одна станица 1 (одно чтение), стоимость при индексном доступе 3 (три чтения). 5. Тоже самое для таблички любого размера (если надо прочесть всю таблицу!!!!), сначала идем в индекс читаем верхний уровень, снова идем в индекс читаем второй уровень находим ровид, идем в саму таблицу. 6. Если надо соединить две таблицы большого размера и в результате получится МНОГО строк, хешджойн будет дешевле и быстрее чем нестидлуп. 7. Хешджойн дешевле и быстрее чем нестидлуп, но жрет больше процессора и памяти. СугубыйНасколько я понял, секвентал скан на больших таблицах (не умещающихся в памяти) - очень дорогостоящая операция (чтение с диска) В принципе не надо много памяти, прочитал чуть-чуть отфильтровал/отдал клиенту, читай следующий кусок. Сугубыйи её следует избегать при оптимизации. Когда как. Если все равно надо прочитать всю таблицу для выполнения запроса, то чтение через индекс дороже чем секскан. Сугубый Тот же коленкор с DYNAMIC HASH JOIN - сервер при каждом запросе строит индекс! Не индекс, а хештаблицу. Не надо сортировать там ничего, хеш не так дорог. Сугубый Как же неоптимально должны быть созданы индексы (или вообще не созданы) что бы планировщик решил сначала создать индекс, а потом делать выборку... сексканы бывают полезны, иногда; иногда полезнен картезиан; индексы иногда мешают; в oltp хорошо нестидлуп, хешджойн плохо, в dss вероятно наоборот; Сугубый(Народ, интересно, читал статейку An Overview of the IBM Informix Dynamic Server Optimizer ?)Я не четал, я чукча-песатель. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2005, 21:32 |
|
||
|
|

start [/forum/topic.php?fid=44&msg=33374796&tid=1608827]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 324ms |

| 0 / 0 |
