starting with 'a'

slay2012
Дата: 03.05.2012 14:17:23
Есть таблица полем varchar(20) кодировка utf8 unicode_ci, кол-во записей 12000. На это поле создан уникальный индекс

При запросе:
select *
from test t
where t.term starting with 'a'

получаю 230 записей и кол-во индексных чтений 12000.

а при запросе
select *
from test t
where t.term starting with 'ab'

получаю 28 записей и 28 индексных чтений

Т.е. если указана только одна буква, то читаеться вся таблица, если две и более - то только реальное ко-во записей...

Это так задумано или я что-то не так делаю?
Dimitry Sibiryakov
Дата: 03.05.2012 14:34:31

slay2012
получаю 230 записей и кол-во индексных чтений 12000.

Вместо отсебятины покажи настоящие план и статистику из isql.

Posted via ActualForum NNTP Server 1.5

kdv
Дата: 03.05.2012 14:46:18
интересно, почему начинающие (не знаю про автора) обычно озабочены "индексными чтениями"? imho если эта информация и полезна, то в весьма редких случаях.
Кроме того, на этот конкретный вопрос ответ может быть "потому что", как минимум, раз версия сервера не указана.
slay2012
Дата: 03.05.2012 15:14:43
Dimitry Sibiryakov
Вместо отсебятины покажи настоящие план и статистику из isql.

Запрос с одной буквой:

План
PLAN (T INDEX (iCoreTerm_Term))

------ Performance info ------
Prepare time = 0ms
Execute time = 0ms
Avg fetch time = 0.00 ms
Current memory = 1 298 216
Max memory = 3 952 212
Memory buffers = 105
Reads from disk to cache = 284
Writes from cache to disk = 0
Fetches from cache = 24 706

запрос с двумя:

План
PLAN (T INDEX (iCoreTerm_Term))

------ Performance info ------
Prepare time = 0ms
Execute time = 0ms
Avg fetch time = 0.00 ms
Current memory = 1 290 160
Max memory = 3 952 212
Memory buffers = 105
Reads from disk to cache = 25
Writes from cache to disk = 0
Fetches from cache = 59

Кстати, это только для русских букв, для латинских, что одна что несколько результат одинаков...


kvd
интересно, почему начинающие (не знаю про автора) обычно озабочены "индексными чтениями"? imho если эта информация и полезна, то в весьма редких случаях.

Не то чтобы я сильно "озаботился", просто интересно почему так?
Это простой запрос, но в составе более сложного, где эта таблица используеться больше двух раз в соединениях - начинает тормозить когда в условии указана только одна буква.

kvd
Кроме того, на этот конкретный вопрос ответ может быть "потому что", как минимум, раз версия сервера не указана.


Каюсь, забыл указать...
версия: WI-V2.5.0.26074
Dimitry Sibiryakov
Дата: 03.05.2012 16:08:34

slay2012
версия: WI-V2.5.0.26074

Если воспроизводится на снапшоте - в трекер.

Posted via ActualForum NNTP Server 1.5

slay2012
Дата: 03.05.2012 16:25:53
Dimitry Sibiryakov
Если воспроизводится на снапшоте - в трекер.


Проверил на Firebird-2.5.2.26472-0_Win32 - воспроизводится.

Вот только в трекер малость проблематично, на буржуйском я врядли вменяемо смогу написать. Чукча читатель... :)
Dimitry Sibiryakov
Дата: 03.05.2012 16:30:22

slay2012
на буржуйском я врядли вменяемо смогу написать. Чукча читатель... :)

На SQL пиши: полный скрипт для воспроизведения. В заголовке напиши "Too many fetches on
some patterns with STARTING WITH".

Posted via ActualForum NNTP Server 1.5

kdv
Дата: 03.05.2012 16:37:56
к слову
slay2012
Memory buffers = 105

почему не 106, или 117?
slay2012
Дата: 03.05.2012 17:04:28
kdv
к слову
slay2012
Memory buffers = 105

почему не 106, или 117?


Интересный вопрос... Я как-то не обращал на это внимание, сейчас посмотрел ibexpert'ом, таки да "Pages" = 105, вот только откуда оно взялось... в конфиге ничего, кроме порта подключения, не правилось. Сервер у меня тестовый (superclassic - если это важно).

Последний снапшот с таким же конфигом, только супер, показывает 2048
slay2012
Дата: 03.05.2012 18:08:16
Создал CORE-3840