#0
by DF_Slayer
Всем привет, кого не видел :) Есть запрос, в котором имеется следующее условие |ГДЕ | Рег.ДатаНачала > &ДатаНачала | И Рег.ДатаНачала < &ДатаОкончания Вопрос. Использует ли 1С индексы в случае такого условия (понятно что при условии "=" индекс используется), и можно ли вообще как-то отслеживать используемые индексы?
#1
by dimoff
Безусловно использует, отследить легко, создай справочник, заполни его сотней тысяч документов и сделай запрос по дате и неиндексируемому реквизиту типа дата с твоими условиями, увидишь разницу.
#5
by H A D G E H O G s
Раз уж пошла такая пьянка, есть кто подскажет - я правильно понимаю, что индекс на поле - это некая таблица с 2-мя колонками: "НомерСтроки", "Значение", в которой хранятся отсортированные значения из индексируемого поля основной таблицы, а также номера их строк. Сортировка производится при вставке/удалении элемента, поиск - методом бисекции. Ищется номер строки основной таблицы. Это мои фантазии, или в этом есть доля правды?
#6
by DF_Slayer
|АВТОУПОРЯДОЧИВАНИЕ"; Это весь текст. + к сказанному приведу следующую цитату с одного форума... "Как известно, в ДБФ-версии для индексирования numeric поля применяется выражение STR(поле, длина, точность). К чему это приводит, тоже известно - идя по этому индексу, получаем, что 9 < -1 < 10"
#7
by Sadovnikov
Так чего ты от такого запроса хочешь? Естественно, он у тебя по закладкам скачет чтобы данные получить. По этому и не видишь особого ускорения.
#9
by Sadovnikov
По индексу будут отобраны необходимые номера строк. Но, за данными скулю придется лезть в таблицу. То самое "прыгать по закладкам". Эта-то процедура и съест весь выигрыш в скорости, если в выборку попала большая часть таблицы.
#11
by megalodon
спасибо. только при малой селективности он и не будет "по закладкам скакать", будет использоваться сканирование.
#12
by H A D G E H O G s
Тоесть полного перебора нет. Ок, ну а если интервал выборки - один день? По поводу - это так?
#13
by Sadovnikov
"по закладкам скачет" = Bookmark Lookup. Прости, господи, за мой плохой английский...
#14
by Sadovnikov
А это, смотря чего ему статистика скажет... Блин, как я сегодня криво выражаюсь...
#18
by megalodon
в общем случае с индексом быстрее, но индекс будет использоваться не всегда - в этих случаях скорость будет одинаковая.
#21
by megalodon
вроде прав в некотором приближении. в твоих терминах "Значение" - это хэш индексируемого выражения, а "Номер строки" - это та самая "закладка", то есть физический адрес записи в таблице.
#22
by H A D G E H O G s
А хэш разве можно сравнивать на больше|меньше (поиск бисекцией, там это надо)?
#23
by megalodon
это когда с результирующий набор запроса попадает более какого то процента всех записей таблицы (то есть если в условии запроса передан большой временной интервал). В этом слечае нет смысла определять по индексу "закладку" каждой записи, а потом по нему для каждой записи получать значения остальных полей - выгоднее сразу сканировать таблицу. Но есть например из миллиона записей возвращается одна - лучше по индексу получить ее адрес, а потом - значения остальных полей. Оптимизитор сам все определит, можешь не париться.
#26
by H A D G E H O G s
Ладно - время будет - буду спец. литературу читать. Где - то видел, что индекс формируется на основе бинарного дерева, но вот представить себе такое - не могу :-)
#27
by Sadovnikov
А чего именно предстаить не можешь? Каждый символ индекса - веточка, от которой остальные символы-веточки растут :)
#28
by H A D G E H O G s
Ну, и прошел я "от корней, до самых кончиков" © (Head and Sholders). И что получил?
#31
by H A D G E H O G s
Номера на самых кончиках хранятся? А в средних узлах - диапазон (перечисление нескольких) номеров, соответствующих условию?
#32
by vde69
алгоритм поиска по индексу: 1 находим в корне дерева первый символ - 2 получаем следующий уровень 3 если уровень последний имеем номер строки в базе, нет - п.1 при такой схеме индексы не надо переформировывать при изменении строки, достаточно "ТОЧЕЧНОЕ" вмешательство
#33
by Sadovnikov
На сколько я понимаю, в средних узлах ничего не хранится. В смысле, никаких диапазонов строк там нет.
#35
by H A D G E H O G s
Ладно, еще вопрос: У меня есть Число. Оно что, преобразуется в строку и посимвольно помещается в дерево индекса?
#37
by H A D G E H O G s
Почитал. И все равно не понял, чем поиск/вставка элемента в двоичном дереве отличается от таблицы . Это же фактически одно и тоже?
#38
by vde69
это зависит от реализации, но обычно дерево строиться byte, то есть и строка и число рассмативаються как одинаковый тип бинари, хотя есть и строковые индексы
#42
by H A D G E H O G s
Просто у меня стойкая психологическое неприятие к деревьям после неудачной попытки реализовать B-дерево на Дельфи. :-)
#43
by MSensey
>> Но, за данными скулю придется лезть в таблицу. Если используется кластреный индекс, то данные в этой же таблице
#44
by Sadovnikov
На поле ВыгрузкаВБегучку.ДатаНачалаВыхода построен кластерный индекс? Интересно, почему я в это не верю?
#45
by MSensey
ну автор умлочал о том чем является ДатаНачалаВыхода Но если взять во внимание фразу "понятно что при условии "=" индекс используется", то можно сказать, что это измерение
#47
by Sadovnikov
Вот и я думаю, что измерение. Мне, например, неизвестно, как по измерению можно построть кластерный индекс.
#49
by Sadovnikov
Так мы понятия не имеем, в каком порядке у автора идут измерения. И где именно это измерение находтся в индексе. Очень большая вероятность, что не на первом месте.
#50
by MSensey
я писал, что если используется такой индекс. Вобщем я к тому, что не обязательно за данными полезут в другую таблицу
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Нестандартная обработка расшифровки ячейки поля
- Есть конфа "Конвертация данных"... Как перенести подчиненный справочник?
- Помогите с КоличествоСтраниц() !
- у кого почта на Рамблере?
- v7: ЗУП: Расчет коэффициента индексации для среднего заработка.
- 1с через remoteApp
- УПП:Запрет на ввод контрагентов
- v7: Какой код дохода поставить для аренды автомобиля?
- Как получить наименование перечисления в SQL
- Приверженцы FireFox как сделать, чтоб при обновлении страницы не прыгал в начало ?
- Сохранение в Эксель текста более 256 знаков в ячейке.
- РАРУС Управление Автотранспортом нужна консультация
- Подскажите разводку блока питания HP Scanjet 5400С
- Построитель отчета, текст запроса к ТЧ документа..
- Дерево значений и табличный документ
- КД 2.0 Перенос плана счетов + субконто.
- Как записать значение реквизита справочника в форме списка?
- Дистанционная или выездная аттестация 1С:Специалист
- OWC11.Spreadsheet - как загрузить данные
- v7: 1с 7.7. ЗиК. получение пенсионного страхового свидетельства