|
|
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. Почему при использовании кодировки коннекта UTF8 план такой: Код: sql 1. , а при использовании кодировки WIN1251 план такой: Код: sql 1. Как можно пофиксить? PS. FB 2/5/3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:05 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:15 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
__Avenger__Почему при использовании кодировки коннекта UTF8 план такой: А почему изначально база не была спроектирована в утф? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:20 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Она в UTF8. Все коннекты в UTF8. На 2.5.2 план был Код: sql 1. , сейчас план Код: sql 1. Отсюда пошли дикие тормоза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:22 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
А поле OPERATION какого чарсета? Попробуй литералу явно чарсет задать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:37 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
выражение (ET."CASH_FK" || '/' || CAST(ET."DATE" AS VARCHAR(10)) || '/' || ET."NUM") должно полностью совпадать между DDL индекса и текстом запроса. Литералы в SQL заданы в чарсете коннекта. Видимо, этот индекс был создан в коннекте с чарсетом WIN1251, а не UTF8. Если чарсет коннекта пляшет и зафиксировать его нельзя, поможет префикс чарсета: _ascii '/' вместо '/'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:43 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
dimitr, и вообще раз уж без DDL не обошлось, лучше вынести это выражение в COMPUTED-By столбец, и этот столбец использовать как в индексе, так и в запросе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:51 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Если индекс R$TEST$1$IDX создать в кодировке WIN1251, то данная проблема воспроизводится. Создаем коннект с кодировкой UTF8 и делаем запрос: Код: sql 1. 2. 3. 4. 5. В итоге план - PLAN JOIN (ET NATURAL, T2 INDEX (TEST$2$PK_DESC)). Как можно решить данную проблему? Код: sql 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:53 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Если индекс создать в кодировке UTF8 - то все ОК. Как переделать кодировку индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:55 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
__Avenger__, сделай через столбец, а не выражение напрямую - тогда кодировки должны совпадать будут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:55 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Попутный вопрос, как узнать какие индексы созданы в Win1251? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:56 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
__Avenger__Если индекс создать в кодировке UTF8 - то все ОК. Как переделать кодировку индекса? Удали индекс и создай заново, в правильном соединении Но тогда у тебя вылезет в других соединениях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 17:56 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
__Avenger__Как можно решить данную проблему? 1. Устранить нарушение первой НФ. 2. Не использовать литералы в запросе. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 18:08 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, кстати, еще один - хотя и небольшой - аргумент за константы в DDL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 18:29 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Как узнать какие индексы созданы в кодировке Win1251? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 22:37 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
__Avenger__, чё-то типа такого должно быть: DDL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Query: Код: plaintext 1. 2. 3. 4. 5. Result: RDB$INDEX_NAMERDB$FIELD_NAMERDB$FIELD_SOURCERDB$CHARACTER_SET_IDRDB$CHARACTER_SET_NAMET_S01_UTF8S01RDB$134UTF8T_S02_WIN1251S02RDB$1452WIN1251T_S03_WIN1252S03DM_LATIN53WIN1252 Но этот запрос, нутром чую, может не все варианты объявлений покрывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 23:30 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Таблоид__Avenger__, чё-то типа такого должно быть: Пересоздал индексы в коннекте utf8. Вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 09:12 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Ariochи вообще раз уж без DDL не обошлось, лучше вынести это выражение в COMPUTED-By столбец, и этот столбец использовать как в индексе, так и в запросе И давно можно делать индексы по вычислимым полям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:36 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
afgm, сделай по выражению, равному вычислимому полю :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:39 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Ariochсделай по выражению, равному вычислимому полю :-) Именно из-за этого у ТС-а и проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:42 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
afgm, нет, у него проблема из-за разных литералов, которе должны по его мнению быть идентичными, но в разных запросах с разными настройками соединений не идентичны я же как раз предложил литералы сделать только один раз и спрятать их внутрь столбца --- кстати, вопрос к птицеводам - в чём логика? индексы, вычисляемые по выражению, разрешены столбцы, вычисляемые по выражению, разрешены индексы по столбцам, вычисляемым по выражению, не разрешены но индексы по выражению равному столбцу, вычисляемому по выражению, разрешены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 12:58 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Ariochиндексы по столбцам, вычисляемым по выражению, не разрешены потому что такой столбец вычисляется "на ходу". т.е. он не детерминирован, что не гарантирует идентичность того же выражения для того же столбца через N секунд, минут... самый типичный пример - вычисляемый столбец по random. Построил ты индекс по этому столбцу, а дальше-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:25 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
kdv, понимаешь ли... всё сказанное тобой абсолютно резонно, но - в точно такой же степен относится и к индексу по выражениям. Тут как бы, в отсутствие materialized views, или трусы или крестик :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:53 |
|
||
|
Кодировка подключения, разный план
|
|||
|---|---|---|---|
|
#18+
Ariochя же как раз предложил литералы сделать только один раз и спрятать их внутрь столбца Я придираюсь, т.к. твой совет являет дезинформацией. Делать надо триггер и материализовать вычисления в поле, после чего индексировать. Никакого COMPUTED BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 14:17 |
|
||
|
|

start [/forum/topic.php?fid=40&startmsg=38816405&tid=1563173]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 572ms |

| 0 / 0 |
