
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.11.2002, 12:31:52
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
Обратил внимание на такую штуку, делаю запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. смотрю на план, и вижу что используется индекс. Так вот мне и интересно, как SQL использует индекс при таком запросе? вроде бы ему все равно всю таблицу сканировать, или он её как то по особому сканирует? Вот сам нехитрый план StmtText -------------------------------------------------------------------------------------------------- |--Compute Scalar(DEFINE:([Expr1002]=[Expr1002])) |--Nested Loops(Inner Join) |--Compute Scalar(DEFINE:([Expr1002]=Convert([Expr1010]))) | |--Stream Aggregate(DEFINE:([Expr1010]=Count(*))) | |--Clustered Index Scan(OBJECT:([Tomagochi_v_2].[dbo].[test].[index_test])) |--Clustered Index Scan(OBJECT:([Tomagochi_v_2].[dbo].[test].[index_test])) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 12:45:57
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
насколько я знаю, SQL Server не использует индексы для таблиц, размер которых, меньше 8 Mb. Он такие таблицы сканирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 12:46:01
|
|||
|---|---|---|---|
|
|||
count и индексы |
|||
|
#18+
Если в таблице есть кластерный индекс, то сканирование таблицы заменяется сканированием этого кластерного индекса (т.к. в этом случае смысла в сканировании таблицы нет никакого). Кластерный индекс это по сути и есть сама таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 12:50:59
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
не 8 Мб, а 8Кб-одна страница данных. Если табличка маленькая (типа пять записей) :), то индекс будет только лишнее место занимать, и не факт, что это будет быстрее чем без индекса... Короче говоря, я бы не стал создавать индекс в данном случае - все таблица умещается в одну страницу памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 13:02:29
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
2AVL это просто пример, а так любая таблица. 2antonz таки ведь использует же :)) я ж даже план привел... Я вот тут что подумал, мне кажется, что при сканировании индекса, на предмет количества записей, надо обработать меньше информации (количество операций ввода/вывода, используемой памяти), чем при сканировании таблицы. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 13:29:05
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
2AVL "ну да" это к тому что я прав или что я сомневаюсь в правоте, и правильно делаю? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 13:33:07
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
при использовании индексов кол-во I/O уменьшается. Только надо чтобы использовался верный индекс - кластерный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 13:35:30
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
Так вот мне и интересно, как SQL использует индекс при таком запросе?вроде бы ему все равно всю таблицу сканировать, или он её как то по особому сканирует? BOL - Optimizing Database Performance - Query Tuning - Analyzing a Query - Logical and Physical Operators - Clustered Index Scan/Index Scan ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 13:38:45
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
вот еще BOL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 13:46:07
|
|||
|---|---|---|---|
|
|||
count и индексы |
|||
|
#18+
2antonz: цифра 8 Mb имеет место быть в другом случае - при создании индексной статистики. Для статистики указывается объем данных (в %), который надо сэмплировать, но если таблица меньше 8 Mb, то она всегда "пробегается" целиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.11.2002, 14:51:39
|
|||
|---|---|---|---|
|
|||
count и индексы |
|||
|
#18+
2 AVL. >не 8 Мб, а 8Кб-одна страница данных. Если табличка маленькая (типа пять записей) :), то индекс будет только лишнее место занимать, и не факт, что это будет быстрее чем без индекса... Короче говоря, я бы не стал создавать индекс в данном случае - все таблица умещается в одну страницу памяти А если данные умещаются в 2 страницы нужен индекс? Прочитаем страницу индекса проанализировав ее высним нужную нам страницу и прочитаем ее (в итоге все равно читаем две страницы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.11.2002, 08:27:53
|
|||
|---|---|---|---|
count и индексы |
|||
|
#18+
такие "пограничные" задачи всегда интересны :) что-то у меня пока в башку ничего не лезет...гмм...я не уверен, что будет прирост производительности при использовании индекса для 2 страниц данных... может тут еще и fillfactor сыграет, в итоге получится, что индекс займет 3 страницы. Однозначно у нас объем индекса сравним с объемом всей таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1819084]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 288ms |

| 0 / 0 |
