|
29.06.2017, 11:59 | #1 |
Участник
|
(sorry, I switch to english)
After run DBCC DROPCLEANBUFFERS the difference is not so huge. This is the Timing with manual created index with dataareaid and Partition: SQL Server Execution Times: CPU time = 0 ms, elapsed time = 30 ms. and this is the time after applying CreateRecIdIndex SQL Server Execution Times: CPU time = 0 ms, elapsed time = 40 ms. This is the query which I used: SELECT TOP 1 (list of all fields) FROM INVENTJOURNALTABLE T1 WHERE DATAAREAID=N'bvd' AND PARTITION=5637144576 AND RECID=5637148643 |
|
29.06.2017, 12:06 | #2 |
Moderator
|
Цитата:
Сообщение от AnGor
(sorry, I switch to english)
After run DBCC DROPCLEANBUFFERS the difference is not so huge. This is the Timing with manual created index with dataareaid and Partition: SQL Server Execution Times: CPU time = 0 ms, elapsed time = 30 ms. and this is the time after applying CreateRecIdIndex SQL Server Execution Times: CPU time = 0 ms, elapsed time = 40 ms. This is the query which I used: SELECT TOP 1 (list of all fields) FROM INVENTJOURNALTABLE T1 WHERE DATAAREAID=N'bvd' AND PARTITION=5637144576 AND RECID=5637148643 Если стоит задача максимально ускорить именно поиск по inventJournalTable, то попробуй искать не по recId, а по journalId. В этом случае - все будет обрабатываться в одну операцию - поиск по кластерному индексу. На вскидку - я бы ожидал что оно с 30ms до 15ms упадет. |
|
29.06.2017, 12:33 | #3 |
Участник
|
Цитата:
I analyze the statistic which I get from DynamicsPerf. After checking the missing Indexes for lazy queries I'm trying to speed up them by adding recommended Indexes. Before create the index in AOT I'm trying to create it direct in SQL. If the index makes effect I apply it on AOT. That's way how I found out that the query run faster if I add to the index DataAreId and Partition. |
|
29.06.2017, 12:37 | #4 |
Участник
|
Цитата:
Нельзя назвать такой результат ожидаемым. Постфактум можно любое объяснение "привинтить". Интересно, а сколько у них там записей всего в табличке и компаний. Последний раз редактировалось Logger; 29.06.2017 в 12:43. |
|
29.06.2017, 12:46 | #5 |
Участник
|
Цитата:
Сообщение от Logger
Интересно. Мне казалось что во втором случае recid индекс будет больше по размеру, плюс на большой табличке поиск по составному ключу с dataareaid на первом месте может дать сильную деградацию. Т.е. я ожидал обратного эффекта.
Нельзя назвать такой результат ожидаемым. Постфактум можно любое объяснение "привинтить". Интересно, а сколько у них там записей всего в табличке и компаний. 28 companies and the table is not big - 1547records. In prod I will expect more records |
|
29.06.2017, 14:07 | #6 |
Moderator
|
Цитата:
Если какое-то поле присутствует и в обычном индексе и в кластерном, то его значение в index entry обычного индекса не дублируется. Фактически в нашем случае, partitionId и dataareaId перехали из правой половины index entry в левую Поэтому добавление в обычный индекс полей из кластерного индекса не приводит к увеличению размера index entry. |
|
|
За это сообщение автора поблагодарили: Logger (5). |
29.06.2017, 14:51 | #7 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
|
|