Делаю такие запросы:
Код | 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;
|
все нормально работает. Но проблема в том, что со временем записей становится все больше - десятки, сотни тысяч. И при выполнении очередного такого запроса программа сильно тормозит. Боюсь, когда записей станет несколько миллионов (а такое будет), каждый такой запрос будет отрабатываться непозволительно долго. Все ли правильно с этим запросом или его можно как-то оптимизировать? |