Показать сообщение отдельно
Старый 01.06.2017, 10:58   #1  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Быстродействие метда TaxParameters::find
AX20012 R2
На таблице TaxParameters метод find интенсивно вызывается при разноске накладной. Журнал трассировки операторов SQL показывает, что этот метод выполняется в среднем 0,1 - 0,15 секунды. Но из-за того, что он вызывается сотни раз, получается задержка.

Почему-то этот метод генерирует на SQL-сервере создание нескольких временных таблиц при каждом своем вызове. Таблица TaxParameters - обычная, не временная.
Вот стек вызовов:
https://yadi.sk/i/u5NxMX2L3JignR

Вот код метода find
PHP код:
public static TaxParameters find()
{
    
TaxParameters parameter;

    
select firstonly parameter
        index key
        where parameter
.Key == 0;

    if (!
parameter && !parameter.isTmp())
    {
       
Company::createParameter(parameter);
    }

    return 
parameter
Временные таблицы генерирует вот этот код:
X++:
    select firstonly parameter
        index key
        where parameter.Key == 0;
Вот какой SQL-запрос по созданию временных таблиц генерирует этот код
CREATE TABLE tempdb."DBO".t435_835E0CB815E343869072DE3F542E1E75
(TAXGROUP NVARCHAR(10) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXITEMGROUP NVARCHAR(10) COLLATE CYRILLIC_GENERAL_CI_AS
NOT NULL DEFAULT '' ,TAXSPECIFYLINE INT NOT NULL DEFAULT 0 ,JOURNALINCLTAX INT NOT NULL DEFAULT 0 ,CALCULATEPRINCIPLE INT NOT NULL
DEFAULT 0 ,PURCHTAXONOPERATIONS INT NOT NULL DEFAULT 0 ,KEY_ INT NOT NULL DEFAULT 0 ,CASHDISCONINVOICE INT NOT NULL DEFAULT 0 ,
TAXLESSCASHDISC INT NOT NULL DEFAULT 0 ,REVERSEONCASHDISC INT NOT NULL DEFAULT 0 ,TAXCALCULATIONDATETYPE INT NOT NULL DEFAULT 0 ,TAXONOVERPAYMENT INT NOT NULL DEFAULT 0 ,
REPORTADJUSTMENT INT NOT NULL DEFAULT 0 ,CONDITIONALTAX INT NOT NULL DEFAULT 0 ,CHECKINTERSECTION INT NOT NULL DEFAULT 0 ,ALLOWDUPLICATES INT NOT NULL DEFAULT 0 ,
VALIDATETAXCODE INT NOT NULL DEFAULT 0 ,TAXREPORT_JP INT NOT NULL DEFAULT 0 ,MANDATORYTAXDIRECTION INT NOT NULL DEFAULT 0 ,CUSTOMS_IN INT NOT NULL DEFAULT 0 ,
SERVICETAX_IN INT NOT NULL DEFAULT 0 ,EXCISE_IN INT NOT NULL DEFAULT 0 ,SALESTAX_IN INT NOT NULL DEFAULT 0 ,VAT_IN INT NOT NULL DEFAULT 0 ,
VENDORCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,CUSTOMERCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,TAXRECOVERABLE_IN INT NOT NULL DEFAULT 0 ,
REVERSESETTLEMENTDATEPRINCIPLE_W INT NOT NULL DEFAULT 0 ,EXIMINCENTIVESCHEMES_IN INT NOT NULL DEFAULT 0 ,RESTOREDVATGAINCALCMETHOD_RU INT NOT NULL DEFAULT 0 ,
RESTOREDVATCALCMETHOD_RU INT NOT NULL DEFAULT 0 ,PERSONTITLE_CZ NVARCHAR(30) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXREPORTFACTOR_CZ NUMERIC(32,16) NOT NULL DEFAULT 0 ,
MAINECONOMICACTIVITYCODE_CZ NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,NATURALPERSONFIRSTNAME_CZ NVARCHAR(20) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT ''
,NATURALPERSONLASTNAME_CZ NVARCHAR(36) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXPAYERSTATUS_CZ INT NOT NULL DEFAULT 0 ,TAXPAYERTYPE_CZ INT NOT NULL DEFAULT 0
,MAINECONOMICACTIVITYCODE_LT NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,DEDUCTIONPERCENT_LT NUMERIC(32,16) NOT NULL DEFAULT 0 ,
TAXSPECPOSTING_RU INT NOT NULL DEFAULT 0 ,INCOMINGVATPAYMENT_RU INT NOT NULL DEFAULT 0 ,EXCHRATEDIFFDOCTYPE_RU INT NOT NULL DEFAULT 0 ,BANKEXCHRATE_W INT NOT NULL DEFAULT 0 ,
REPORTUSEVATDUEDATE_W INT NOT NULL DEFAULT 0 ,SALESTAXPAYABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0 ,SALESTAXRECEIVABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0
,SERVICETAXACBASIS_IN INT NOT NULL DEFAULT 0 ,TAXBRANCHENABLED INT NOT NULL DEFAULT 0 ,MODIFIEDDATETIME DATETIME NOT NULL DEFAULT dateadd(ms, -datepart(ms,getutcdate()), getutcdate()) ,
DEL_MODIFIEDTIME INT NOT NULL DEFAULT 0 ,MODIFIEDBY NVARCHAR(8) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '?' ,DATAAREAID NVARCHAR(4) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL
DEFAULT 'dat' ,RECVERSION INT NOT NULL DEFAULT 1 ,PARTITION BIGINT NOT NULL DEFAULT 5637144576 ,RECID BIGINT IDENTITY NOT NULL CHECK (RECID <> 0) )
CREATE TABLE tempdb."DBO".t435_835E0CB815E343869072DE3F542E1E75 (TAXGROUP NVARCHAR(10) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXITEMGROUP NVARCHAR(10)
COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXSPECIFYLINE INT NOT NULL DEFAULT 0 ,JOURNALINCLTAX INT NOT NULL DEFAULT 0 ,CALCULATEPRINCIPLE INT NOT NULL
DEFAULT 0 ,PURCHTAXONOPERATIONS INT NOT NULL DEFAULT 0 ,KEY_ INT NOT NULL DEFAULT 0 ,CASHDISCONINVOICE INT NOT NULL DEFAULT 0 ,TAXLESSCASHDISC INT NOT NULL DEFAULT 0 ,
REVERSEONCASHDISC INT NOT NULL DEFAULT 0 ,TAXCALCULATIONDATETYPE INT NOT NULL DEFAULT 0 ,TAXONOVERPAYMENT INT NOT NULL DEFAULT 0 ,REPORTADJUSTMENT INT NOT NULL DEFAULT 0 ,
CONDITIONALTAX INT NOT NULL DEFAULT 0 ,CHECKINTERSECTION INT NOT NULL DEFAULT 0 ,ALLOWDUPLICATES INT NOT NULL DEFAULT 0 ,VALIDATETAXCODE INT NOT NULL DEFAULT 0 ,TAXREPORT_JP
INT NOT NULL DEFAULT 0 ,MANDATORYTAXDIRECTION INT NOT NULL DEFAULT 0 ,CUSTOMS_IN INT NOT NULL DEFAULT 0 ,SERVICETAX_IN INT NOT NULL DEFAULT 0 ,EXCISE_IN INT NOT NULL DEFAULT 0 ,
SALESTAX_IN INT NOT NULL DEFAULT 0 ,VAT_IN INT NOT NULL DEFAULT 0 ,VENDORCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,CUSTOMERCALCULATIONDATETYPE_IN INT NOT NULL DEFAULT 0 ,
TAXRECOVERABLE_IN INT NOT NULL DEFAULT 0 ,REVERSESETTLEMENTDATEPRINCIPLE_W INT NOT NULL DEFAULT 0 ,EXIMINCENTIVESCHEMES_IN INT NOT NULL DEFAULT 0 ,RESTOREDVATGAINCALCMETHOD_RU INT
NOT NULL DEFAULT 0 ,RESTOREDVATCALCMETHOD_RU INT NOT NULL DEFAULT 0 ,PERSONTITLE_CZ NVARCHAR(30) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXREPORTFACTOR_CZ NUMERIC(32,16)
NOT NULL DEFAULT 0 ,MAINECONOMICACTIVITYCODE_CZ NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,NATURALPERSONFIRSTNAME_CZ NVARCHAR(20) COLLATE CYRILLIC_GENERAL_CI_AS
NOT NULL DEFAULT '' ,NATURALPERSONLASTNAME_CZ NVARCHAR(36) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,TAXPAYERSTATUS_CZ INT NOT NULL DEFAULT 0 ,TAXPAYERTYPE_CZ INT NOT NULL
DEFAULT 0 ,MAINECONOMICACTIVITYCODE_LT NVARCHAR(6) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '' ,DEDUCTIONPERCENT_LT NUMERIC(32,16) NOT NULL DEFAULT 0 ,TAXSPECPOSTING_RU INT
NOT NULL DEFAULT 0 ,INCOMINGVATPAYMENT_RU INT NOT NULL DEFAULT 0 ,EXCHRATEDIFFDOCTYPE_RU INT NOT NULL DEFAULT 0 ,BANKEXCHRATE_W INT NOT NULL DEFAULT 0 ,REPORTUSEVATDUEDATE_W INT
NOT NULL DEFAULT 0 ,SALESTAXPAYABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0 ,SALESTAXRECEIVABLEEXCHANGERATETYPE BIGINT NOT NULL DEFAULT 0 ,SERVICETAXACBASIS_IN INT NOT NULL
DEFAULT 0 ,TAXBRANCHENABLED INT NOT NULL DEFAULT 0 ,MODIFIEDDATETIME DATETIME NOT NULL DEFAULT dateadd(ms, -datepart(ms,getutcdate()), getutcdate()) ,DEL_MODIFIEDTIME INT NOT
NULL DEFAULT 0 ,MODIFIEDBY NVARCHAR(8) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT '?' ,DATAAREAID NVARCHAR(4) COLLATE CYRILLIC_GENERAL_CI_AS NOT NULL DEFAULT 'dat' ,
RECVERSION INT NOT NULL DEFAULT 1 ,PARTITION BIGINT NOT NULL DEFAULT 5637144576 ,RECID BIGINT IDENTITY NOT NULL CHECK (RECID <> 0) ) EXECUTE (prepare, bind, attributes, etc)
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/

Последний раз редактировалось Ace of Database; 01.06.2017 в 11:03.