|
|
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Теперь вопросы: 1. Планы для запросов с переменными вообще работают? Или я туплю? :)) Ведь если подставить вместо переменной "TC" строковое значение, то закомментированный план становится валидным, иначе только NATURAL , что мне не очень нравится... :((( 2. В закомментированном условии WHERE не выполняется условие по else :(( Что я неправильно пишу? Или like с case 'ом не арбайтен? P.S. Блин, пришлось строковые переменные в закомментированном куске процедуры взять в двойные кавычки иначе в предварительном просмотре получается: -- where typ."TypeCode" like case "_and_"(:"iState",16) when 16 then %af_src_str_2 else %af_src_str_3 end Адинистрация, можно это поправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 11:55 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
автор1. Планы для запросов с переменными вообще работают? Или я туплю? :)) Ведь если подставить вместо переменной "TC" строковое значение, то закомментированный план становится валидным, иначе только NATURAL, что мне не очень нравится... :((( А немного подумать? LIKE может использовать индекс только в случае, если строка паттерна не начинается с wildcard-символа. Что в случае параметра/переменной неизвестно на этапе препаре. Подставь константу "%a" и увидишь тот же NATURAL. автор2. В закомментированном условии WHERE не выполняется условие по else :(( Что я неправильно пишу? Или like с case'ом не арбайтен? Разницу в работе LIKE при CHAR и VARCHAR полях знаем? Пиши так: Код: plaintext и все будет мягким и шелковистым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 13:33 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
dimitrА немного подумать? LIKE может использовать индекс только в случае, если строка паттерна не начинается с wildcard-символа. Что в случае параметра/переменной неизвестно на этапе препаре. Подставь константу "%a" и увидишь тот же NATURAL. Хммм, странно с чего бы это вилдкард мешает использованию индекса в запросе. Тем более я вручную указываю, что нужно юзать именно этот индекс... Хех, ладно, будем думать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 14:32 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
авторХммм, странно с чего бы это вилдкард мешает использованию индекса в запросе. Предложи алгоритм поиска в b-tree строки, заканчивающейся на "а". Или содержащей эту букву внутри (в неизвестной позиции). авторТем более я вручную указываю, что нужно юзать именно этот индекс... Если бы сервер с тобой согласился, то у него остался бы выбор между генерацией исключения и выдачей неправильных данных. авторХех, ладно, будем думать... Да, обычно это помогает ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 12:29 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
Я думал, долго думал... Честно! ;) dimitrЕсли бы сервер с тобой согласился, то у него остался бы выбор между генерацией исключения и выдачей неправильных данных. Да ну? А если данные правильные? Т.е. ты хочешь сказать что сервер лучше меня знает какие данные будут в переменных? Я так не думаю. А теперь по существу, насколько я понял, ты входишь в команду разработчиков FB... Следовательно с твоей подачи можно будет сделать такую фичу как ручное указание планов, вне зависимости от того что думает оптимизатор? Я конечно могу разбить этот запрос в ХП на два с двумя константными строками, которые определяются в самом начале, но это не эстетично и громоздко... Почему бы не разрешить разработчику указывать те планы, которые нужны ему? Пусть даже БД вместе с серваком помрут... На то он и разработчик, и он должен думать головой, что он делает... А надежда на оптимизатор и т.д. не всегда способствует нужной скорости... Может я и не прав, тогда объясни мне тупомордому, где именно. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2004, 10:39 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
авторДа ну? А если данные правильные? Т.е. ты хочешь сказать что сервер лучше меня знает какие данные будут в переменных? Я так не думаю. А если данные неправильные? Сервер должен выдавать правильный результат при любом плане вне зависимости от входных параметров запроса. Если при каком-то плане это не обеспечивается, этот план быть использован не может. Точка. авторА теперь по существу, насколько я понял, ты входишь в команду разработчиков FB... Следовательно с твоей подачи можно будет сделать такую фичу как ручное указание планов, вне зависимости от того что думает оптимизатор? А с чего ты взял, что будет таковая подача? Я не джинн по исполнению желаний. авторЯ конечно могу разбить этот запрос в ХП на два с двумя константными строками, которые определяются в самом начале, но это не эстетично и громоздко... А встраивать всякую херню в сервер - это более эстетично и менее громоздко, по-твоему? авторПочему бы не разрешить разработчику указывать те планы, которые нужны ему? Пусть даже БД вместе с серваком помрут... На то он и разработчик, и он должен думать головой, что он делает... Опыт показывает, что головы у разработчика приложений нет. Зато есть жопа у разработчика СУБД. У если БД с серваком будут умирать, то в конечном счете пострадает именно эта жопа ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2004, 13:42 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
Ясно "Вопросов больше не имею..." (с) Дискотека Авария ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2004, 13:48 |
|
||
|
Два вопроса по Firebird: Плановое хозяйство (PLAN) и CASE
|
|||
|---|---|---|---|
|
#18+
dimitr Опыт показывает, что головы у разработчика приложений нет. Зато есть жопа у разработчика СУБД. У если БД с серваком будут умирать, то в конечном счете пострадает именно эта жопа ;-) Фраза дня. Можно я ее где нибудь процитирую ? (немного перефразировав и выдав за свою , естественно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2004, 14:18 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32415293&tid=1579186]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 511ms |

| 0 / 0 |
