Конференция "Базы" » create table жутко тормозит [MSSQL]
 
  • Miau (02.07.09 14:25) [0]
    У клиента два предприятия, использующих одну и ту же программу, работают каждое в своей базе. То есть, по структуре базы одинаковые. Но в одной из них тормозит вот это место, включённое в хранимую процедуру:


    CREATE TABLE [ #SELL_ARTICLE] (
    [ARTICLE_ID] [int] NOT NULL ,
    [GROUP_ID] [int] NOT NULL ,
    [ARTICLE_NAME] [varchar] (95) ,
    [ARTICLE_CODE] [varchar] (30) ,
    [ARTICLE_CODE1] [varchar] (255),
    [ARTICLE_TYPE_ID] [int] NOT NULL ,
    [ATYPE_NAME] [varchar] (10) NOT NULL ,
    [PRICE_IN] [MONEY] NOT NULL ,
    [PRICE_OUT] [MONEY] NOT NULL ,
    [D1] [MONEY],
    [D2] [MONEY],
    [D3] [MONEY],
    [D4] [MONEY],
    [CURRENCY_ID] [int] NOT NULL ,
    [CURRENCY_CODE] [varchar] (10) NOT NULL ,
    [UNIT_ID] [int] NOT NULL ,
    [UNIT_SHORT] [varchar] (10) ,
    [WEIGHT] [MONEY],
    [QUOTA] [int],
    [QUOTA_BOX] [int],
    [DESCRIPTION] [varchar] (90),
    [MARKUP] [MONEY],
    [IS_SELECT] [bit],
    [GTD_CODE] [varchar] (33),
    [GTD_COUNTRY] [varchar] (35),
    [REST] [float],
    [PLACE_STORAGE] [varchar] (45),
    [RESERV] [float],
    [PRIM] [varchar] (3),
    [BRAK] [varchar] (5),
    [BACK_COLOR] [int],
    [TMR_AMOUNT] [money],
    [TMR_RESERV] [money],
    [TMR_PRICE] [money],
    [TMR_DATE] [datetime],
    [SCAN_CODE] [varchar] (20),
    [IS_PRICE_ROUND] [bit],
    [USER_WRITER] [varchar] (255),
    [USER_CHANGE] [varchar] (255),
    [DATE_CHANGE] datetime ,
    [REST_FREE] [float]
    )



    Вот это на первой базе выполняется в миг, а на второй занимает 5 (пять !!) секунд. Обе базы помещены на один и тот же сервер. С обеими базами работал под логином sa.

    Есть ли у кого-нибудь материалистическое объяснение сего феномена?
  • sniknik © (02.07.09 14:41) [1]
    > [ #SELL_ARTICLE]
    а зачем такая экзотика? пробел в имени, + символ временной таблицы, это не опечатка? может это реально задумывалось как временная?
  • Miau (02.07.09 15:31) [2]
    Это не пробел в имени. Это так форум отображает.

    В общем, посмотрел повнимательнее.
    Тормозит не сам CREATE, а вместо с INSERT, который идёт за ним.
    Отдельно CREATE - быстро, 0 сек
    Отдельно INSERT - быстро, 0 сек
    Вместе - 5 сек

    На первой базе все три варианта идут за 0 сек при приблизительно том же объёме данных
  • sniknik © (02.07.09 16:31) [3]
    > Это так форум отображает.
    "копипастни" и посмотри, форум или там все таки пробел.

    > Отдельно CREATE - быстро, 0 сек
    > Отдельно INSERT - быстро, 0 сек
    между ними по правильному нужен GO, т.к. таблица у тебя получается постоянная.
  • Miau (02.07.09 16:37) [4]
    Нет там пробела, сам смотрел.

    GO?
    Прямо посреди хранимой процедуры?

    Я серьёзно. Выдрал этот кусок create... insert... select...
    Прогнал и на одной базе, и на другой, не меняя синтаксиса.
    Разница результатов - 5 сек.
  • sniknik © (02.07.09 16:40) [5]
    > Нет там пробела, сам смотрел.
    тогда убери скобки вокруг имени #SELL_ARTICLE, и проверь так

    > Прямо посреди хранимой процедуры?
    не, это для квери аналайзера. для проверки там и там пойдет, если чтото измениться надо будет думать.
  • stas © (02.07.09 16:55) [6]
    Miau   (02.07.09 16:37) [4]
    количество записей одинаковое?
 
Конференция "Базы" » create table жутко тормозит [MSSQL]
Есть новые Нет новых   [134473   +31][b:0][p:0.001]