![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите оптимизировать процедуру MSSQL2000
Димон111 © (2002-11-04 13:10:00)Нужно
1) вытащить из таблицы строчку,
2) Записать в другую табличку № этой строки,
3) вернуть ResulSet полученный в п.1
делаю так:
CREATE PROCEDURE DBO.PostsEvent
@FBarcode char(20)
AS
declare @fid int
SELECT @fid=ID FROM MyTable WHERE Barcode=@FBarcode
INSERT INTO LOG (CURRENT_TIMESTAMP, @fid ) // вставить значение из запроса
SELECT * FROM MyTable WHERE id=@fid
GO
приходится 2 раза открывать запрос, подскажите плиз , может как-нибудь лучше с курсором это сделать
спасибо
Marcus (2002-11-04 18:00:00) [1]А чем тебя исходный вариант не устраивает. Все равно самая тормозная часть это SELECT @fid=ID FROM MyTable WHERE Barcode=@FBarcode, поскольку поиск по строке.
А выбор по id, да еще если это primary key, выполняется практически мгновенно. Так что это не поле для оптимизации
Димон111 (2002-11-04 14:14:00) [2]Господа, есть ещё идеи?
Димон111 (2002-11-04 13:22:00) [3]2 3JIA9I CyKA ©
Проблема в том что, полей много, а одно из них вообще БЛОБ.
может что-то типа
DECLARE CURSOR MyCur
as select * from MyTable where Barcode=@Fbarcode
open MyCurr
INSERT INTO LOG (CURRENT_TIMESTAMP, MyCur.ID)
SELECT * FROM MyCurr
?
3JIA9I CyKA (2002-11-04 13:16:00) [4]Типа этого
declare
@p1 int,
@p2 varchar(10)
select
@p1 = id,
@p2 = [чё-то]
from [где-то]
where blablabla = "бу-бу-бу"
insert ....
select
ID = @p1,
[чё-то] = @p2