Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Вниз

Ускорение запросов   Найти похожие ветки 

 
Megabyte ©   (2006-06-23 19:04) [0]

1-й раз столкнулся с тем, что надо оптимизировать запросы, т.к. долго происходит выборка, 10-12 секунд(конечно, все познается в сравнении).
На данный момент у меня происходит 32 последовательных запроса к БД на различные выборки из одних и тех же полей из 2-х таблиц, но запросы не сильно большие. Длительность получается в совокупности.

Есть 2 варианта: а)делать один запрос, а далее на клиенте применять различную фильтрацию.
б)Либо проиндексировать нужные поля. БД создавал не я, и там никаких дополнительных индексов сделано не было.
Ни разу до этого глобально не занимался фильтрацией и использованием индексов(а также их созданием в MSSQL).

1) На ваш взгляд, с чего лучше начать: а или б? Что больше поможет
2) Подкиньте ссылок по созданию и использованию индексов в MSSQL.
Что-то Яндекс ничего хорошего не показал, только различные темы на форумах...


 
Vlad ©   (2006-06-23 19:43) [1]

Enterprise Manager -> Tools -> Wizards -> Index Tuning Wizard

Можно создавать самому, посмотри какие поля используешь в where, соотв. по ним и строй индексы. Возможно (даже лучше), составные.


 
Palladin ©   (2006-06-23 19:44) [2]

1) Начать лучше с того что именно выбирается в запросе и как часто это происходит.
2) Индексы не панацея.


 
Lamer@fools.ua ©   (2006-06-23 20:11) [3]

>1) Начать лучше с того что именно выбирается в запросе и как часто это происходит.

Кроме этого, посмотреть как это выбирается (план выполнения запроса) плюс, возможно, статистику (SET STATISTICS...)

>Подкиньте ссылок по созданию и использованию индексов в MSSQL.
http://www.sql.ru/articles/mssql/03013101Indexes.shtml


 
Megabyte ©   (2006-06-25 02:23) [4]


>  [1] Vlad ©   (23.06.06 19:43)
> Enterprise Manager -> Tools -> Wizards -> Index Tuning Wizard
>
> Можно создавать самому, посмотри какие поля используешь
> в where, соотв. по ним и строй индексы. Возможно (даже лучше),
> составные.

Да я это понимаю. Только когда залез в "управление индексами", увидел столько всяких рюшечек, захотел понять предварительно, что каждая значит.

>  [2] Palladin ©   (23.06.06 19:44)
> 1) Начать лучше с того что именно выбирается в запросе и
> как часто это происходит.

Сейчас напишу. Клиент строит типа бухгалтерский отчет. Есть таблица "Документы"(различые денежные обороты). Основыми полями являются: Дата составления, сумма, код_валюты(рубли, баксы, евро, гривны), дебет[приход денег](определяет тип, так сказать, сущности, по которой строится отчет), кредит[расход денег](аналогично, как для дебета), SubContoDt(индекс конкретной сущности по дебету) и SubContokt(индекс конкретной сущности по кредиту), сумма2(т.е. док-ты бывают с расчетом по 2-м разым валютам), код_Валюты2.
Связи постороены хитро. Есть 3 таблицы различых "сущностей": конкретные сотрудники-Employees(71 дебет и кредит), расчетные счета-SettlementAccounts(51), кассы-Subdividings(50).
Там в каждой таблице есть ID и полное описание каждой сущности аля Иванов Петр, Р/С№345, Зеленоград - Касса отдела продаж и т.д. Связь идет по ID с полями SubContoDt, SubContokt.
Отчет состоит в том, чтобы показать денежые обороты за период между 2-мя датами, также должна указываться начальная сумма/долг на начало периода.

Получается, что надо выбирать так, во-первых, в зависимости от выбора пользователя, делать отчет по одному из типов сущности(т.е. заранее неизвестно, какая из 3-х таблиц будет использоваться в запросе), по конкретной сущности.
Далее надо для каждой валюты считать сумму по всем приходам и расходам до указанного периода, потом сумму по приходам и расходам за период. Итого 4 запроса. Умножаем на 4 типа валют = 16. Т.к. у нас есть еще сумма2, то умножаем на 2. 32 запроса. Вот так!

> [3] Lamer@fools.ua ©   (23.06.06 20:11)
> >1) Начать лучше с того что именно выбирается в запросе
> и как часто это происходит.
>
> Кроме этого, посмотреть как это выбирается (план выполнения
> запроса) плюс, возможно, статистику (SET STATISTICS...)

Вот планирование - это один большой пробел моих знаний в SQL. Надо будет разрюхать. Спасибо за ссылку!


 
softservice ©   (2006-06-25 03:44) [5]

Не знаю, поможет или нет, но мы использовали такие варианты:
- Сущности хранятся в одно таблице, которая называется субконто. Она хранит только наименование и ID. Остальные специфичные данные хранятся в субтаблица.
- Как следствие, выборка всегда происходит из одной таблицы по первичному для нее индексу (который явлется внешним (foreign key) в таблице операций или документов). Подробную инфу может выдать клиент при запросе пользователя. Но для бух. отчетов этого не требуется.
Конкретно по указанному случаю: делаешь все в одном запросе. left outer join еще никто не отменил :)


 
Megabyte ©   (2006-06-26 16:39) [6]


> Не знаю, поможет или нет, но мы использовали такие варианты:
> - Сущности хранятся в одно таблице, которая называется субконто.
>

БД делал не я, и править её я тоже не могу, т.к. БД и другой клиент у них поставляются сторонней фирмой. А меня попросили налабать клиент для построения отчета.

Я не понял, как буду делать всё в одном запросе, если у меня все равно надо получить 32 различных цифры? И зачем здесь " left outer join"?


 
Megabyte ©   (2006-06-29 17:44) [7]

Пара вопросов про индексы:
1) Чтобы индекс использовался при выборке, надо обязательно свойству indexname прописать имя нужного индекса?
2) В дизайн-тайме в свойстве indexname</B должен быть выпадающий список индексов. У меня ничего не показывает(хотя индексы есть)??? Свойство Connection прописал!


 
Курдль ©   (2006-06-29 18:06) [8]


> А меня попросили налабать клиент для построения отчета.


Значицца так. Впариваешь клиентам MSTR (http://www.microstrategy.com/), настраиваешь его за хорошее бабло, срубаешь комиссию с "MicroStrategy, Inc", проблемы со скоростью сваливаешь на MS SQL, после чего впариваешь клиенту оракл. Срубаешь комиссию с "Ораакле" и все в шоколаде. Далее - на фабрику "Российский шоколад" и в соседнюю ветку!


 
Megabyte ©   (2006-06-29 18:37) [9]


> Курдль ©   (29.06.06 18:06) [8]

А почему ты еще не Мастер? %)))



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
4-1143568002
que
2006-03-28 21:46
2006.07.30
Делфи и USB(HID complaince &amp; device)


8-1139383204
AlexeyMir
2006-02-08 10:20
2006.07.30
Как муз.файла независимо воспроизвести на 2х звуковых


2-1152535365
zdm
2006-07-10 16:42
2006.07.30
FREE


15-1151649368
syte_ser78
2006-06-30 10:36
2006.07.30
просто вопрос о деньгах.


1-1150488885
guard_gg
2006-06-17 00:14
2006.07.30
Как реализовать динамический буффер в BlockRead?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский