Модераторы: Rodman
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тормозит SQL сервер 
:(
    Опции темы
DoZENT
Дата 14.3.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 2.6.2006

Репутация: нет
Всего: 1



Делаю такие запросы:
Код

  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add ('SELECT ID_Article');
  ADOQuery.SQL.Add ('FROM dbo.Catalog_Articles');
  ADOQuery.SQL.Add ('WHERE ArticleNumber =' + ''''+pArticleNumber+'''');
  ADOQuery.SQL.Add ('AND ID_MARK =' + IntToStr(pID_MARK));
  ADOQuery.Open;
  s := ADOQuery.FieldByName('ID_Article').AsString;
  if s = '' then begin
    ExecuteQuery ('INSERT INTO dbo.Catalog_Articles (ArticleNumber, ID_MARK, Description, ID_Text) ' +
                  'VALUES (' + ''''+pArticleNumber +''''+ ', ' + IntToStr(pID_MARK) + ', ' +
                  ''''+pDescription + ''''+ ', ' + IntToStr(pID_Text) +
                  ')');
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Add ('SELECT SCOPE_IDENTITY() as ID_Article');
    ADOQuery.Open;
    ArticleID := ADOQuery.FieldByName('ID_Article').AsInteger;
  end;

все нормально работает. Но проблема в том, что со временем записей становится все больше - десятки, сотни тысяч. И при выполнении очередного такого запроса программа сильно тормозит. Боюсь, когда записей станет несколько миллионов (а такое будет), каждый такой запрос будет отрабатываться непозволительно долго. Все ли правильно с этим запросом или его можно как-то оптимизировать?


--------------------
Какая боль, какая боль, Internet Explorer 5.0...
PM MAIL   Вверх
Kesh
Дата 14.3.2010, 17:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 3
Всего: 54



А индекс на ArticleNumber+ID_MARK есть?


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Deniz
Дата 15.3.2010, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Вероятно индекс ArticleNumber+ID_MARK должен быть еще и уникальным.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Google
  Дата 22.2.2020, 10:18 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1137 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.