Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
БаширМусаев Member Откуда: Сообщений: 12 |
MSSQL-2008. Есть таблица в котором около 4 млн записей. В которой поле DateOper(тип datetime2(7)) проиндексировано. Если делать такой запрос SELECT SUM(s1) FROM table1 WHERE DateOper BETWEEN '2012-01-25' AND '2012-01-26' выполняется меньше секунды а если такой DECLARE @d1 datetime2(7), @d2 datetime2(7) SET @d1='2012-01-25' SET @d2='2012-01-26' SELECT SUM(s1) FROM table1 WHERE DateOper BETWEEN @d1 AND @d2 выполняется 25-30 секунд Я вообще в недоумении, по идеи первый запрос преобразует тип, и это он должен выполняться дольше но получается наоборот. Делать как в первом не могу, так как этот запрос у меня в хранимой процедуре и вызывается с программы... Проясните в чем дело и что не правильно? |
13 окт 13, 18:14 [14963119] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
https://www.sql.ru/blogs/somewheresomehow/999 |
13 окт 13, 18:18 [14963125] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
Knyazev Alexey, Что то там слишком много воды и ничего конкретного. Просто ответьте как мне исправить положение? |
13 окт 13, 18:28 [14963144] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
Ну вот если бы вы ознакомились с ссылкой, которую я вам скинул, то поняли бы, что для решения вашей проблемы есть разные рекомендации и в каждом конкретном случаи проблемы могут отличаться... ответ в плане запроса, в кэше планов запроса, в set-настройках и т.д. |
||
13 окт 13, 18:48 [14963179] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
Я понял что от индексов толку нету !!! Потому что там переменная Но это какой то нонсенс !!! Использование констант для повышения скорости запроса !!! Как мне в хранимой процедуре где используется параметры работать с константами !!! И вообще не пойму почему он в запросе переменные не считает временными константами, и не понятно как с этим бороться !!! А план запроса тут был не нужен, и так видно !!! Я же показал пример и достаточно ясно сказал где выполняется дольше !!! И что теперь??? отказаться от хранимых процедур? и если так то зачем они вообще нужны в MSSQL |
||||
13 окт 13, 19:05 [14963220] Ответить | Цитировать Сообщить модератору |
kalimba Member Откуда: Сообщений: 297 |
БаширМусаев, Планы обоих запросов выложите |
13 окт 13, 19:20 [14963262] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
Прочитайте в конце концов статью по ссылке... |
||
13 окт 13, 19:27 [14963272] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
kalimba, вот планы запросов К сообщению приложен файл. Размер - 31Kb |
13 окт 13, 19:30 [14963281] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
БаширМусаев, ну и?! по планам запроса вам не понятно, что из кэша поднимается план со сканом индекса... кстати по ссылке всё это подробно описано... зы: кстати, вы и ваш запрос "выполняется меньше секунды" можете "разогнать", если избавитесь от кей лукапа, за счёт покрывающего некластерного индекса... |
13 окт 13, 19:32 [14963288] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
Нет на это времени, клиенты ждать не могут пока я буду читать статью и в конце узнаю то чего и так знаю и ответов на свои вопросы не найду. Не совсем читабельная статься, есть авторы которых читаешь в раз, а есть те которые воздух сотрясают. Пока что сделал просто через константы, от хранимых процедур отказался - далеко не всегда полезны |
||||
13 окт 13, 19:33 [14963291] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
по конкретнее можно? пример запроса напишите !!! |
||
13 окт 13, 19:37 [14963298] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
простите, но по вашим вопросам, я могу сделать вывод, что ваши знания нулевые в области баз данных...
ну а тут вы ошибаетесь, т.к. эта статья действительно очень глубокая, уровня 300...
ну тогда тупо(!) добавте хинт recompile и будет вам счастье... DECLARE @d1 datetime2(7), @d2 datetime2(7) SET @d1='2012-01-25' SET @d2='2012-01-26' SELECT SUM(s1) FROM table1 WHERE DateOper BETWEEN @d1 AND @d2 option (recompile) ЗЫ: жаль ваших клиентов... |
||||||
13 окт 13, 19:38 [14963299] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
Послушай умник !!!! 1. Когда я занимался IT технологиями то ты еще не родился 2. Человек который знает просто ответит и все. 3. Знания нулевые у того кто оценивает других.. Если тебе жаль моих клиентов )) хотя ты их на знаешь, то мне жаль тебя))) Учитель хренов))) Знаешь ответь, не знаешь молчи и не умничай. |
13 окт 13, 19:49 [14963318] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
и после этого вы действительно рассчитываете на помощь в этом форуме!? (с) чукча не читатель... |
||
13 окт 13, 19:51 [14963323] Ответить | Цитировать Сообщить модератору |
БаширМусаев Member Откуда: Сообщений: 12 |
Knyazev Alexey, 1. А я ее разве получил ???. 2. Надеюсь на форуме не все такие как вы. |
13 окт 13, 20:05 [14963354] Ответить | Цитировать Сообщить модератору |
kalimba Member Откуда: Сообщений: 297 |
БаширМусаев, Как сказали выше допишите в конец OPTION (RECOMPILE), хотя лучше OPTION (OPTIMIZE FOR UNKNOWN) |
13 окт 13, 20:49 [14963464] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34711 Блог |
вам дали статью, полностью описывающую проблему, там же указаны и методы решения, а если нет желания читать литературу, то есть форум "Работа", там помогут за денежку не устраивает? "давай-до свидания", вам тут никто ничем не обязан |
||
13 окт 13, 23:24 [14964005] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
|
||||
13 окт 13, 23:40 [14964058] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
что теперь, что теперь - сменить область деятельности. а то эти сволочи из MS не так и не сделают так, как вам хотелось бы. да и на форуме здесь только злые и бесчувственные негодяи, не желающие пожалеть ваших клиентов. |
||
14 окт 13, 10:02 [14964852] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |