#0
by H A D G E H O G s
Позорище на мою голову. Есть РС "Контактная информация". Ну будем считать - просто табличка. Делаю запрос вида SELECT _Fld14845_RRRef, _Fld14846RRef FROM _InfoRg14844 T1 WITH(NOLOCK) WHERE (T1._Fld14846RRef = 0x94A0FD27BDAD5C8041F122244CD904B6) SQL использует индекс _InfoR14844_ByDims20173_RRS (в котором эти 2 поля, первое _Fld14846RRef), что правильно и логично. Делаю запрос вида SELECT _Fld14848, _Fld14846RRef FROM _InfoRg14844 T1 WITH(NOLOCK) WHERE (T1._Fld14846RRef = 0x94A0FD27BDAD5C8041F122244CD904B6) Поле _Fld14848 не входит ни в один индекс. SQL делает TableScan! Почему??? Моя не понимать. Статистику обновлял update statistics _InfoRg14844 WITH FULLSCAN, ALL
#5
by ДенисЧ
"Поле _Fld14848 не входит ни в один индекс" Поэтому и... Хотя... По идее должен быть index seek, а потом выборка...
#6
by H A D G E H O G s
Поле не составного типа. Индекс - составного типа (это поле и другие поля в составе сложных измерений регистра). p.s. Там есть индексы на все случаи жизни
#11
by Господин ПЖ
>Я же не ищу по полю _Fld14848 пофих... оно первое по выборке >Хотя... По идее должен быть index seek, а потом выборка... смотря например какого размера таблица
#20
by H A D G E H O G s
Селективность то причем тут? Результат запроса по количеству строк одинаков. Разные только - включена в выборку неиндексированная колонка или нет.
#22
by Господин ПЖ
>Разные только - включена в выборку неиндексированная колонка или нет. она не просто включена, а стоит первой
#28
by H A D G E H O G s
Индексировать ресурс Представление неограниченной длины, в котором может крыться Война и Мир, дабы преодолеть звуковой барьер (900 байт:) Интересно.
#30
by H A D G E H O G s
Измерения все проиндексированны. 1С создала для них туеву хучу индексов в разной последовательности полей. Тут все хорошо?... Я выбираю ресурс Представление, и сразу TableScan. Почему???
#35
by H A D G E H O G s
Бугага Взял другое строковое поле, тоже не входящее в индекс, но уже ограниченной длины SELECT _Fld14849, _Fld14846RRef FROM _InfoRg14844 T1 WHERE (T1._Fld14846RRef = 0x94A0FD27BDAD5C8041F122244CD904B6) Тот же TableScan, но план запроса мне подсказывает внести его в индекс. Missing index (impact 79.6567).....
#36
by Serginio1
18 + В первом случае не надо прыгать от индекса к записи так как в первом все данные лежат в индексе. Во второс случае проще пройтись по таблице это будет быстрее, т.к. данные все равно считываются страницами
#38
by H A D G E H O G s
В каком случае будет выгодней прыгать от индекса к записи? Когда в выборке будет мало записей?
#40
by H A D G E H O G s
Ок. Если я счаст добавлю кластерный индекс на поле Fld14846RRef - он мне по кластерному индексу пройдется и RID Lookup, или все равно выгодней TableScan?
#43
by H A D G E H O G s
Хоть тут разобрался. Остался вопрос - когда выгоднее nonclustered index seek и RID lookup, нежели TableScan
#44
by Serginio1
Да судя по 18 у тебя треть записей соответствует индексу и получается очень накладно прыгать. Поэтому по моему в MS SQL 2005 ввели индексы с данными, что бы не прыгать.
#45
by Serginio1
44+ INCLUDE CREATE INDEX IXPostalCode_inc ON Employees(PostalCode) INCLUDE(LastName) 42 ну да все данные и хранятся в клястерном индексе
#46
by H A D G E H O G s
Немного не понимаю, кстати, КАК можно накладно прыгать. Если у тебя есть ROWID - это как адрес в памяти, либо смещение файла, доступ почти мгновенен. Или я не понимаю чего?
#48
by Serginio1
Не совсем мгновенен. При скане все данные хранятся в кэше процессора, а прыгать приходится либо к медленной памяти если страница с данными подгружена, либо эту страницу с диска подгружать
#52
by Serginio1
Плюс даже когда последовательно читаешь данные сказывается эффект использования DDR с двойным чтением
#53
by H A D G E H O G s
Изменил условие на WHERE (T1._Fld14846RRef = 0xAF80FC923034C1ED41A83A7B79C1C3E0) В выборке 31 запись IndexSeek и RID УРААААА
#54
by Serginio1
52 + а там разница может достигать 10 раз При последовательном чтении и скачкообразным
#60
by rs_trade
TableScan выгоднее для небольших таблиц. Использующих одну или несколько страниц данных. Для таких таблиц индексы лучше вообще не создавать
#62
by rs_trade
хз. надо страницами считать. складываем длинну всех колонок, умножаем на кол-во записей. и делим на 4096. получаем кол-во страниц. 3500 для КИ это много. в 1С маленькая таблица, это что то типа справочника организации, валюты и прочее
#66
by Serginio1
Гы гы у меня было 60 лямов, а одновременно обновлялись по 4 ляма на прямых запросах с Merge
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как в ЗУПе настроить право на "Только просмотр" без редактирования конфигурации?
- Подписка на событие РегистрНакопления.Взаиморасчеты, перед записью.
- как в константу ПараметрыАдминистрированияИБ попадает значения?
- претензии и штрафы
- Электронные весы Штрих - М POS и 1с 8 Розница
- Выборка последних движений по номенклатуре
- УТ 11 отгрузка больше, чем указано в распоряжении на отгрузку
- СКД: 2 регистра, две таблицы, одни параметры
- Не изменяются суммы в проводках при изменении в табличной части документа
- v8: Ошибка при Расшифровке внешнего отчета
- Фискальник и РКО
- Перенос данных из Парус 7 Зарплата в 1С
- v7: Проблема с кодировкой текста при выводе регламентированного отчета
- 1С 8.2 Обработка расшифровки в отчете
- V82: очистка индекса невозможна пока идет его построение
- v8: Гиперссылки в форматированном документе
- Свод начислений и удержаний не показывает сальдо
- Подключение считывателя parsec PR-EH08
- v7: Как узнать владельца формы списка справочника, в модуле этой формы списка
- v7: Вопросы по работе с таблицей значений в 1С 7.7