Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 20:44   #1
rmise
Пользователь
 
Регистрация: 07.04.2010
Сообщений: 11
По умолчанию StoredProc или Query?

Доброго времени суток.
Пишу диплом. есть база MySql с одной табличкой, но записей в ней порядка 3 000 000. Часто приходится выбирать максимальное и минимальное значение какого нить поля, также необходимо делать выборки примерно по 200 000 записей.
Использую компонент MyQuery, запросы выполняются довольно долго.

Вопрос: как ускорить выполнение запросов?
Посоветывали использовать StoredProc, стоит ли?
ЗЫ: данным компонентом ни разу не пользовался и понятия не имею как пользоваться
Помогите, пожалуйста, кто что знает
rmise вне форума Ответить с цитированием
Старый 21.04.2010, 10:43   #2
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Сообщение от rmise Посмотреть сообщение
Использую компонент MyQuery... Посоветывали использовать StoredProc, стоит ли? ЗЫ: данным компонентом ни разу не пользовался и понятия не имею как пользоваться
Ммм... Здесь смысл - не просто поменять один компонент на другой... Как бы это сказать попроще ... Ну, в общем, по сути тебе предлагают немного пересмотреть методы работы с базой данных. Если сейчас, ты хранишь свои запросы на клиенте, то теперь их нужно будет оборачивать в хранимые процедуры, которые будут хранится уже на сервере БД. И из клиента просто вызывать их по имени, передав соответствующие параметры. При таком подходе есть свои преимущества. В целом, если СУБД поддерживает хранимые процедуры, то лично я предпочту с БД работать именно так. Только вместо StoredProc, я обычно использую ADODataSet и ADOCommand.

Цитата:
Сообщение от rmise Посмотреть сообщение
Вопрос: как ускорить выполнение запросов?
Почитай про индексы, почитай про оптимизацию запросов.

Цитата:
Сообщение от rmise Посмотреть сообщение
также необходимо делать выборки примерно по 200 000 записей.
Таскать на клиента по 200000 записей - это, конечно, дурной тон .

P.S. Да, и еще замечу - хранимые процедуры заранее оптимизируются и компилируются, что позволяет экономить значительное время при каждом вызове хранимки. Ну и плюсом также будет то, что при выполнении кода хранимой процедуры требуется меньший сетевой трафик, так передается не сам текст запроса, а лишь их короткие имена.

Последний раз редактировалось edgy; 21.04.2010 в 10:52. Причина: Добавил P.S.
edgy вне форума Ответить с цитированием
Старый 17.01.2011, 14:38   #3
wert12
 
Регистрация: 16.01.2011
Сообщений: 6
По умолчанию

помогите мне пожалуйста.как мне вывести правильно результат хранимой процедуры через StoredProc. у меня все время, в не зависимости от входных параметров выводит 1.
вот код:
Код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
POiskPac->Close();
POiskPac->Parameters->ParamByName("@lname")->Value=Edit1->Text;
POiskPac->Parameters->ParamByName("@imea")->Value=Edit2->Text;
POiskPac->Parameters->ParamByName("@otcestvo")->Value=Edit2->Text;
Edit4->Text=IntToStr(POiskPac->Parameters->ParamByName("@idPacient"));
POiskPac->ExecProc();
}

Последний раз редактировалось Stilet; 17.01.2011 в 14:48.
wert12 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Query Potrashitel БД в Delphi 13 27.09.2009 11:44
Query artemavd БД в Delphi 1 24.08.2008 10:34
QUERY werser Помощь студентам 2 10.06.2008 19:13
Query mma БД в Delphi 5 17.02.2008 22:11