Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
на 2500 записей имхо индексы будут не заметны в простых... 08.12.07 05:45 Число просмотров: 5510
Автор: i1 Статус: Незарегистрированный пользователь
|
> Постановка задачи: > Дано: > - Справочник (~2500 записей) имущества. Меняется в > справочнике только одно поле (битовое) -метка, что считано. > - Реинженеринг. Те софт не знает про "тонкости" структуры > базы > - Сиквел для СЕ > - "Вход" select в базу данных - штрих-код. > - Индексов нет. > - Есть два поля из которых формируется штрих-код, которые > присвоен (приклеен :)) к имуществу. > Требуется: > - Будет ли прирост, если создать индекс(ы)? > - Структура индекса. > - Оценка прироста? > > Софт работает. Вопрос больше архитектурный :)
на 2500 записей имхо индексы будут не заметны в простых запросах,
нужно знать запросы на которых хочется прироста производительности
и исходя их них строить индексы
и вообще проще посмотреть на скорость с индексами и без на нужных запросах :)
|
<programming>
|
(sql CE) Индекс(-ы) 07.12.07 21:04
Автор: Garick <Yuriy> Статус: Elderman
|
Постановка задачи:
Дано:
- Справочник (~2500 записей) имущества. Меняется в справочнике только одно поле (битовое) -метка, что считано.
- Реинженеринг. Те софт не знает про "тонкости" структуры базы
- Сиквел для СЕ
- "Вход" select в базу данных - штрих-код.
- Индексов нет.
- Есть два поля из которых формируется штрих-код, которые присвоен (приклеен :)) к имуществу.
Требуется:
- Будет ли прирост, если создать индекс(ы)?
- Структура индекса.
- Оценка прироста?
Софт работает. Вопрос больше архитектурный :)
|
|
Индексы при 50к записей действительно помогают на select, а как ускорить update - меняется одно поле в одной строке тип bit? Секунд пять идет апдейт. 16.05.08 14:03
Автор: Garick <Yuriy> Статус: Elderman
|
|
| |
change transaction Isolation Level? 16.05.08 21:36
Автор: void <Grebnev Valery> Статус: Elderman
|
|
|
Однозначно будет! 09.12.07 15:50
Автор: Den <Денис Т.> Статус: The Elderman
|
> Постановка задачи: > Требуется: > - Будет ли прирост, если создать индекс(ы)?
Однозначно будет!
> - Структура индекса.
Кластерный индекс по полям, на основе которых строится штрих-код.
(+) - существенный прирост произв.поиска без увеличения размера БД
(-) - возможно некоторое падение производительности при добавлении записей (некритичный аспект в случае "справочника").
> - Оценка прироста? > > Софт работает. Вопрос больше архитектурный :)
З.Ы. Не совсем понятно, зачем использовать SQL CE. Вполне достаточно подобия DBF формата и кластерного индекса.
|
| |
"З.Ы. Не совсем понятно, зачем использовать SQL CE. Вполне достаточно подобия DBF формата и кластерного индекса." - приложение исполняется на мобильном устройстве со ШК сканером. 10.12.07 00:46
Автор: Garick <Yuriy> Статус: Elderman Отредактировано 10.12.07 00:48 Количество правок: 1
|
а и сама реализация сиквел СЕ весьма проста. Установил библиотеку, положил файл в нужное место и работай. Нет необходимости сиквел сервер поднимать :)
Но нет, соотвественно, и многопользовательского режима. Да и зачем на мобильном терминале многопользовательский режим? :) Для этого есть експресс редакция (но для десктопов), также бесплатная.
С индексами попробую по возможности, сенкс.
Только не знаю как на мобильном устройстве бенчмаркинг с БД устроить, тут софт писать надо :)
|
|
на 2500 записей имхо индексы будут не заметны в простых... 08.12.07 05:45
Автор: i1 Статус: Незарегистрированный пользователь
|
> Постановка задачи: > Дано: > - Справочник (~2500 записей) имущества. Меняется в > справочнике только одно поле (битовое) -метка, что считано. > - Реинженеринг. Те софт не знает про "тонкости" структуры > базы > - Сиквел для СЕ > - "Вход" select в базу данных - штрих-код. > - Индексов нет. > - Есть два поля из которых формируется штрих-код, которые > присвоен (приклеен :)) к имуществу. > Требуется: > - Будет ли прирост, если создать индекс(ы)? > - Структура индекса. > - Оценка прироста? > > Софт работает. Вопрос больше архитектурный :)
на 2500 записей имхо индексы будут не заметны в простых запросах,
нужно знать запросы на которых хочется прироста производительности
и исходя их них строить индексы
и вообще проще посмотреть на скорость с индексами и без на нужных запросах :)
|
| |
имхо индексы будут заметны. Кстати SQL2005 вроде позволяет... 09.12.07 07:04
Автор: void <Grebnev Valery> Статус: Elderman
|
> на 2500 записей имхо индексы будут не заметны в простых > запросах, имхо индексы будут заметны. Кстати SQL2005 вроде позволяет агрегировать простой ключ непосредствено в индексе. Тогда ещё более заметно будет. Нет?
|
| | |
почитал про предмет разговора, понял что не учел объемы и... 10.12.07 04:30
Автор: i1 Статус: Незарегистрированный пользователь
|
> > на 2500 записей имхо индексы будут не заметны в > простых > > запросах, > имхо индексы будут заметны. Кстати SQL2005 вроде позволяет > агрегировать простой ключ непосредствено в индексе. Тогда > ещё более заметно будет. Нет?
почитал про предмет разговора, понял что не учел объемы и скорости памяти :)
я так себе это представляю:
включаем терминал, запускаем приложение,
считываем первый штрих код, sql подгружает таблицу в RAM, ищет по полю,
выдает результат. На следующем считывании если таблица все еще в памяти надо
сделать в среднем 2500 сравнений без индекса, или 20 с индексом
(т.к. штрих код состоит из 2х полей). т.к. штрих код постоянной не очень большой длины
то операция сравнения займет не много времени на 300-400 мегагерцовом проце
и отличить на глаз 2500 и 20 сравнений не получится :) хотя конечно это надо смотреть
если же таблица в оперативке по каким то причинам не хранится то
при поиске в память загружается только индекс, который конечно меньше самой
таблицы, допустим индекс весит 100К (по 40 байт на штрих код) когда таблица
допустим 2.5 метра (по 1К на запись). Скорости чтения с флэш памяти: 2 - 133 Мб/с
то есть на этом этапе разница будет максимум в секунду минимум примерно 0.02 секунды
получается, что если для таблицы хватает памяти в RAM, или флеш-память в терминале быстрая, то разница будет особо не заметна.
если бы была сложная логика с запросами по этим полям используемыми в больших циклах, то
конечно индексы дали бы большой прирост скорости
если чего-то не учел поправьте.
ПС: индексы конечно это круто :)
|
| | | |
Кластерный индекс не является индексом в привычном понимании. 12.12.07 13:53
Автор: Den <Денис Т.> Статус: The Elderman
|
Это всего лишь упорядочивание записей в таблице по заданным полям.
Для таблицы с количеством записей ~2500 и "индексом", построенным по двум полям, максимальное количествово итераций поиска не привысит 12.
|
| | | | |
я имел ввиду операций сравнения, то есть 1 итерация поиска =... 13.12.07 03:00
Автор: i1 Статус: Незарегистрированный пользователь Отредактировано 13.12.07 03:09 Количество правок: 1
|
> Это всего лишь упорядочивание записей в таблице по заданным > полям. > Для таблицы с количеством записей ~2500 и "индексом", > построенным по двум полям, максимальное количествово > итераций поиска не привысит 12.
я имел ввиду операций сравнения, то есть 1 итерация поиска = 2 операции сравнения
но понял что так считать нельзя :)
в индексах я так понимаю используются двоичные деревья, то есть количество итераций поиска
равно логарифму по основанию 2 от числа записей (забыл как считать логарифм по основанию при
помощи других логарифмов и поэтому посчитал от е, получилось 7 с чемто,
ну я и прикинул что от 2-х будет 10 :))
от 2-х оказалось 11.28.... операций сравнения в предыдущем посте тогда получилось бы 24
но так как в процессе поиска участвуют 2 поля то на начальном этапе поиска достаточно сравнивать
1-е поле и, если нет совпадения, то второе не сравнивать, то есть на вскидку 12 сравнений 1-го поля
и 2-3 сравнения второго и то это много, если 1-е поле в таблице имеет в основном разные значения.
то есть в итоге 15 операций сравнения
хм.. только что понял что при построении индекса из 2-х полей выгоднее пихать первым полем то,
в котором значения будут больше разниться :)
тогда и для простого перебора будет максимум не 2*2500 сравнений а 2500 + 100 (чтоб не жадничать :))
тогда в среднем получается 1300 сравнений
|
| | | | |
А если будет 35к записей? :) При тех же условиях. 12.12.07 17:02
Автор: Garick <Yuriy> Статус: Elderman
|
|
| | | | | |
16 итераций поиска :) 13.12.07 03:01
Автор: i1 Статус: Незарегистрированный пользователь Отредактировано 13.12.07 03:01 Количество правок: 1
|
|
| | | | | | |
+1 не больше 16-ти 14.12.07 17:29
Автор: Den <Денис Т.> Статус: The Elderman
|
|
|
|