У меня есть хранимая процедура, которая, похоже, является моей бутылочной горловиной в моем приложении. Проблема в том, что таблицы, к которым он применяется, обновляются очень часто (примерно раз в секунду с десятками записей), поэтому индексация не является тривиальной.
Похоже, что для каждого прогона ХП - есть тот, который запускается примерно за 1,5 секунды (в то время как другие работают в течение 300-400 мс или меньше). Насколько я понимаю, обновляется дерево индексации.
RBDMS - это SQL Server 2008 R2.
Вот ИП:
PK для архива и оперативной таблицы - "pk1" (например), который здесь не используется.
FK - это идентификатор пользователя (который является PK в Table_Users)
INSERT INTO Table_Archive
SELECT userid, longitude, latitude, direction, RcvDate
FROM Table_Live
WHERE userid = @userid
DELETE FROM Table_Live WHERE userid = @userid
-- write down the new location
INSERT INTO
Table_Live (userid, longitude, latitude, direction)
VALUES (@userid, @lon, @lat, @dir)
UPDATE Table_Users
SET location = 'true'
WHERE loginid = (SELECT MAX(loginid) as loginid
FROM Logins
WHERE userid = @userid)
Есть идеи, что можно сделать, чтобы он работал оптимально? Предпочтительно он должен работать под 200 мс.