|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
К примеру, мне надо, чтобы при параметре IS NULL выбирались все записи таблицы, а при IS NOT NULL только соответствующие значению параметра. Оба следующих варианта на 2.5.7 не используют индекс принципиально: Код: sql 1. 2. 3.
или Код: sql 1. 2. 3.
Хорошо, если мне требуется отбор по одному параметру - я могу сделать в ХП два запроса, выполняемых по условию IF (:groupId IS NOT NULL) THEN... А если мне требуется три параметра -восемь запросов? Надо с этим что-то делать... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:14 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_devА если мне требуется три параметра -восемь запросов? Надо с этим что-то делать... Да, надо править консерваторию. Например, исключить из картины SP. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:19 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, то есть посылать серверу собранный на клиенте запрос? А как быть с подобными запросами (ХП), вызываемыми из других ХП? Собирать запрос в строку и делать EXECUTE STATEMENT внутри FOR? Чот фигня какая-то... Может лучше научить сервер использовать индекс не только с одиночным предикатом "равно"? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:29 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_dev, для начала попробуй на ФБ 3.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:30 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
dimitr, дождусь уж 4.0 в июле, даст Бог... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:39 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
тебе результат нужен или поговорить захотелось? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:43 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
dimitr, хотелось поговорить за результат на 2.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 12:01 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
или динамически формируй запрос, или делай UNION ALL Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 12:18 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Мимопроходящий, и обернуть это в SELECT DISTINCT? Вариант... Спасибо, попробую! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 12:58 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_devи обернуть это в SELECT DISTINCT? Зачем? У тебя поле может быть NULL и NOT NULL одновременно? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:02 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, да, правильно! Обёртывать не надо, но всё равно кол-во объединенных запросов получается 2 в степени кол-ва параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:07 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Поправочка: 2 ** кол-во_параметров - 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:14 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_devхотелось поговорить за результат на 2.5. в 2.5 с этим уже никак. Оптимизатор строит план до prepare, соответственно, он не знает, что там будет, поэтому для такой конструкции индекс использовать в плане никак не может. В 3.0 на такие конструкции в плане выдается пара PLAN ... (table natural, table index (tableindex)) и "нужная часть плана выбирается в рантайме (при выполнении запроса)". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:17 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
В общем, получилось как то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Оно того стоит? Ведь всё равно, по сути, выполняется четыре запроса на выборку, вместо одного. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:25 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Hello, Rdb Dev! You wrote on 20 апреля 2017 г. 13:32:08: Rdb Dev> Ведь всё равно, по сути, выполняется четыре запроса на выборку, вместо одного. статистику чтений смотри Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:29 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Мимопроходящий, статистика так себе... Индексы, конечно, используются, но при любом раскладе присутствует NIR в количестве строк таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:37 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_dev, Таблоид это делал вот так Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 14:40 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Hello, Симонов Денис! You wrote on 20 апреля 2017 г. 14:47:16: Симонов Денисfield1 BETWEEN (:param1, –2147483648) AND (:param1, 2147483647)ты чо-то напутал Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 14:44 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Мимопроходящий, COALESCE забыл Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 14:50 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Симонов Денис, забавно! :) И всё бы хорошо, но ФБ не понимает когда и какой индекс ему использовать. Пересчет статистики не помогает и в конечном счете ФБ переходит на выборку по PK при любых значениях параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 15:14 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_dev, так выборка по PK всегда наиболее оптимальна ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 15:20 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Симонов Денис, неа. Если в качестве параметра, с которым сравнивается поле с PK, передаешь NULL, то в выборку по PK попадают все записи и оптимальным, в этом случае, будет использование индекса по второму полю, сравнивающееся со вторым параметром (если он не NULL). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 15:27 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
Уважаемые разработчики, NullIf() в ФБ3 или ФБ4 будет использовать индексы? Думал так выкрутится: Код: sql 1.
не получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 15:31 |
|
Как заставить FB использовать индекс
|
|||
---|---|---|---|
#18+
rdb_dev, ту уже определись тебе надо при использовании NULL показывать все записи или ни одной. Думать надо, а не тупо копировать советы. Этот способ вполне себе годиться для отдельных случаев. Что именно там у тебя отсюда не видно, поскольку ты привёл какой-то абстрактный запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 15:35 |
|
|
start [/forum/topic.php?fid=40&msg=39441539&tid=1561626]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 289ms |
total: | 546ms |
0 / 0 |