|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6.
до кучи ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2013, 21:36 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Такой вариант не плох (ShopCode, saledate) include(Amount, Qty) where IsDeleted = 0 до кучи ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2013, 21:46 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
alexeyvgДелаю, если нужно, разные же бывают запросы и данные, иногда такое может ускорить многочасовой отчёт в разы. Понятно, что не самоцель, но тонкость тут в том, что этот индекс нужен один, поскольку у ТС задача оптимизировать самый массовый запрос (как я понял по его словам). Так что добавится всего лишь лишний 1 бит на строку интекса, что в общем немного, для исключения лукапа не задумываясь бы сделал. Один БАЙТ. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2013, 22:46 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
qwetyfquwey, Про тест. 0) Запрос у него был другой. Group by по дате ещё был. 1) диапазон по дате может какой-то реальный лучше взять, вряд ли товарищь за 12 лет данные брал. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2013, 23:11 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
MasterZivqwetyfquwey, Про тест. 0) Запрос у него был другой. Group by по дате ещё был. 1) диапазон по дате может какой-то реальный лучше взять, вряд ли товарищь за 12 лет данные брал. по 0. все равно этот индекс (ShopCode, saledate) include(Amount, Qty) where IsDeleted = 0 и в случае goup by shopcode, saledate выиграет. 1 лень, автор как партизан молчит... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2013, 23:18 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
1. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
2. Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 00:33 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
ьяalexeyvgДелаю, если нужно, разные же бывают запросы и данные, иногда такое может ускорить многочасовой отчёт в разы. Понятно, что не самоцель, но тонкость тут в том, что этот индекс нужен один, поскольку у ТС задача оптимизировать самый массовый запрос (как я понял по его словам). Так что добавится всего лишь лишний 1 бит на строку интекса, что в общем немного, для исключения лукапа не задумываясь бы сделал. Один БАЙТ.Ну да, ошибся, один байт конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 09:18 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
fghnfghfghnfMasterZivqwetyfquwey, Про тест. 0) Запрос у него был другой. Group by по дате ещё был. 1) диапазон по дате может какой-то реальный лучше взять, вряд ли товарищь за 12 лет данные брал. по 0. все равно этот индекс (ShopCode, saledate) include(Amount, Qty) where IsDeleted = 0 и в случае goup by shopcode, saledate выиграет. 1 лень, автор как партизан молчит... :) взял на себя смелость сделать ваш тест чуть ближе к условиям автора, а именно 1. добавил группировку по saledate 2. уж если есть группировка по saledate, я думаю там храниться именно дата, соответственно округли его 3. по дате размазал данные чуть больше чем на год, и ограничил выборку одним месяцем 4. добавил статистику выполнения по времени итого получилось данные Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
тест Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76.
все результаты Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
в данном варианте изначальный вариант просто убог Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4.
вариант Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 13:18 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
create indexно почему-то в два раз больше съедает процессорного времени, и как следствие выполняется в два раза дольше. хз, тут скорее всего еще есть зависимость от версии и даже от оборудования, у меня для двух избранных индексов на 48-ядерном сервере получилось так: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4263.0 (X64) Aug 23 2012 15:56:56 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) автор (IsDeleted, ShopCode, saledate) include(Amount, Qty) Table 't1'. Scan count 6, logical reads 1325, <остальные все 0> SQL Server Execution Times: CPU time = 172 ms, elapsed time = 172 ms. (ShopCode, saledate) include(Amount, Qty) where IsDeleted = 0 Table 't1'. Scan count 6, logical reads 1289, <остальные все 0> SQL Server Execution Times: CPU time = 172 ms, elapsed time = 168 ms. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 15:01 |
|
Нужен совет по построению индекса
|
|||
---|---|---|---|
#18+
Критикcreate indexно почему-то в два раз больше съедает процессорного времени, и как следствие выполняется в два раза дольше. хз, тут скорее всего еще есть зависимость от версии и даже от оборудования, у меня для двух избранных индексов на 48-ядерном сервере получилось так: Microsoft SQL Server 2008 R2 (SP2) - 10.50.4263.0 (X64) Aug 23 2012 15:56:56 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) автор (IsDeleted, ShopCode, saledate) include(Amount, Qty) Table 't1'. Scan count 6, logical reads 1325, <остальные все 0> SQL Server Execution Times: CPU time = 172 ms, elapsed time = 172 ms. (ShopCode, saledate) include(Amount, Qty) where IsDeleted = 0 Table 't1'. Scan count 6, logical reads 1289, <остальные все 0> SQL Server Execution Times: CPU time = 172 ms, elapsed time = 168 ms. цифры малы, и на них вполне могут оказывать влияние внешние, а т.к. другого объяснения увеличению времени выполнения я придумать не могу, скорее всего ваши результаты ближе к истине а по поводу индекса Код: plaintext 1. 2. 3.
Код: plaintext 1.
то они вполне себе могут выдавать лучшие результаты при увеличении числа ShopCode в "in (...)" благодаря "Scan count 1" ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2013, 15:11 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1706129]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 250ms |
total: | 389ms |
0 / 0 |