Страница 2 из 3
Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 10:39
Disillusioned
Поскольку у меня Sybase, то с полной уверенностью тебе не скажу про MS SQL...
Но попробуй так:
Код: Выделить всё
Dim lCon,lRecSet
Set lCon = GetADOConnect()
Set lRecSet = LCon.Execute("CALL lsdbo.xpGetArray... ?
Если не прокатит попробуй:
Код: Выделить всё
Dim lCon,lRecSet,sql
Set lCon = GetADOConnect()
Set lRecSet = CreateObject("ADODB.RecordSet")
sql="CALL lsdbo.xpGetArray...
lRecSet.Open sql,lCon
Если это не прокатит, вот третий вариант
Код: Выделить всё
Dim lCon,lRecSet,sql
Set lCon = GetADOConnect()
Set lRecSet = CreateObject("ADODB.RecordSet")
sql="SELECT * FROM lsdbo.xpGetArray(...
lRecSet.Open sql,lCon
Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 10:43
Александр
вот - совсем другое дело!!!!!!
в общем смысл ясен...
я щас прикинул - и понял что много лишнего надо писать, пока отладка...
я так скриптик набросал посмотрел, через неделю переписал и т.д.
когда настройку на продажу выставим тогда только хп

а пока не катит
но все равно спасибо вроде общая картина по ускорению данного защищенного монстра начинает складываться

Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 14:51
Юрий
Самый лучший вариант это не хп, а функции возвращающие табличный результат.
Это практически View но к которым можно прицепить параметры и очень гибко
управлять результатом.
Советую.

Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 14:55
Александр
а что именно советуешь?
вот эта функция lRecSet.Open sql,lCon и возвращает табличный результат в рекордсет
Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 15:13
Юрий
Функции базы данных:
Например :
Код: Выделить всё
CREATE FUNCTION LSDBO.GetRezFromBase
(
-- Add the parameters for the function here
@p1 int,
@p2 char
)
RETURNS TABLE
AS
RETURN
(
SELECT * from ........
)
GO
а потом ее используешь
Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 15:21
Александр
не... я против написания своих функций в базе
только штатная структура и наполнение - весь анализ внешними функциями COM и внутренними селектами

Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 15:35
Юрий
Я всеравно не пойму чем селект написанный в функции отличается от селекта
написанного в скрипте???

Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 15:53
Александр
только тем что он (селект в скрипте) написан без использования программирования БД
Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 16:22
Юрий
Да ты что!
А я думал, что select это и есть прграммирование
базы данных, точнее одна из команд прграммирования.

Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 18:15
Александр
Select - эт не программирование - точно знаю
ладно закончили
Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 20:56
Старик Крупский
Конечно, не программирование! Программирование - это update

Re: Радикальное увеличение скорости
Добавлено: 21 апр 2009, 21:04
Александр

ты не поверишь я еще в базе, запросы мучаю и ищу быстродействие - но не нахожу
Re: Радикальное увеличение скорости
Добавлено: 22 апр 2009, 08:29
Disillusioned
Юрий писал(а):Самый лучший вариант это не хп, а функции возвращающие табличный результат.
Это практически View но к которым можно прицепить параметры и очень гибко
управлять результатом.
Советую.

Когда я заводил речь о ХП, я имел в виду и procedure и function, т.к. в каждой из поддерживаемой Лоцией СУБД их возможности весьма сильно разнятся.
Если в MS SQL возможна функция возвращающая таблицу, то в Sybase ASA нет (однако ничто не мешает ставить процедуры во FROM и делать с ними любые, в том числе и боковые"lateral" соединения). Т.е. то что в MS SQL - функция, в Sybase ASA - процедура...
Re: Радикальное увеличение скорости
Добавлено: 14 май 2009, 11:15
Александр
Disillusioned - СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Юрий - СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
короче плюнул на предрассудки, написал в базе функцию типа
Код: Выделить всё
ALTER function [LSDBO].[Ric........
(@Obj_Mnemo char(256) )
Returns table
as
return
(
SELECT
vv0.value AS ...,
vv1.value AS ...,
vv2.value AS ...,
vv3.value AS ...
...
)
и табличный результат + пару служебных столбцов в многомерный массив Wokrflow типа
Код: Выделить всё
f_EmbeddedSQLSelect ( this , 'select pRating, pObjDescr, pAtrVendor, 0 as pBt, pObjID from LSDBO.Ric...(~''+ vProductTypeCurrent +'~') Order by '+ if( p_TOP=0,'pObjDescr','pRating desc, pObjDescr') , '' , 'pFormPrice' )
f_RetrieveForm ( this , '' , 'pFormPrice' )
Сижу - балдею, скорость это - все!!!!
ps
но все равно я против того чтоб в базу писать свои процедуры и функции

Re: Радикальное увеличение скорости
Добавлено: 14 май 2009, 12:21
Александр
Еще вопрос...
с табличным ускорением вроде все понятно - а как лучше ускорить выборку блока одиночных переменных
т.е. другими словами мне нужно быстро выполнить ряд разноплановых запросов и передать результату в WorkFlow
как лучше?
написать хп которая наберет строку из полученных результатов - передает ее в WorkFlow где строка уже будет разобрана на составляющие???
или как?
пока варианта лучше скрипта под админом без создания быстрого пользователя не вижу...
делать отдельные процедуры/функции тож смысла вроде нет - т.к. запросов много и они в отладке т.е. могут изменится в любой момент