выбрать по всем столбцам таблицы с строкой 330K займет 6 минут - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь получить все столбцы, чтобы получить все строки из таблицы. Это на MS SQL Server 2012.

Информация о моей таблице ниже: Количество рядов-330К, Количество колонн-18, Indexe - кластерный индекс по столбцам идентификаторов, Data Space-57MB, Указатель Space-10MB,

Когда я выбираю все столбцы из таблицы Management Studio, требуется около 6 минут, чтобы получить всю строку. Это делает сканирование индекса кластера. Что можно сделать, чтобы повысить производительность, чтобы быстрее получить таблицу? Мое намерение состоит в том, чтобы запустить его менее чем за 1 минуту.

Я создал эту таблицу вместо представления. Эта таблица заменяет представление. Я думал, что наличие всех данных в таблице (исключая объединение в представлении) улучшит производительность. Но это не так. Таблица была создана, и данные были заполнены.

ПЛАН ИСПОЛНЕНИЯ

оператор создания таблицы:

CREATE TABLE [abc].[abc](
    [ID] [int] NOT NULL,
    [ss_ID] [numeric](10, 0) NULL,
    [Bm] [numeric](16, 3) NULL,
    [Em] [numeric](16, 3) NOT NULL,
    [Bs] [int] NULL,
    [es] [numeric](16, 3) NULL,
    [Series] [int] NULL,
    [pp_NUM] [numeric](16, 3) NULL,
    [dia] [numeric](8, 4) NULL,
    [thickness] [numeric](7, 4) NULL,
    [Grade_Num] [numeric](12, 8) NULL,
    [Rnum] [numeric](13, 8) NULL,
    [Spct] [numeric](14, 2) NULL,
    [Created_By_User_ID] [nvarchar](45) NULL,
    [Created_DateTime] [datetime] NULL,
    [Last_Mod_By_User_ID] [nvarchar](45) NULL,
    [Last_Mod_DateTime] [datetime] NULL,
    [Install_Date] [datetime] NULL,
 CONSTRAINT [PK_abc_ID] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
) ON [PRIMARY]

Спасибо!

Ответы [ 3 ]

1 голос
/ 16 апреля 2019

Если вы выберете все строки и все столбцы, он всегда будет сканировать всю таблицу, в данном случае кластерный индекс.

Невозможно повысить производительность, единственный вариант - вернуть меньше информациитак что индекс действительно может помочь.

1 голос
/ 16 апреля 2019

Если вы прочитали все столбцы и все строки, вам необходимо перенести около 56 МБ из хранилища на ваш компьютер. Типичные узкие места:

  1. Хранилище - попробуйте использовать сжатие PAGE для таблицы или создать индекс columnstore
  2. Сеть - обновить сеть или использовать выделенное соединение
  3. CPU (в этом сценарии не распространено) - добавьте больше процессоров

Вам необходимо отслеживать их во время выполнения запроса и выявлять узкие места.

0 голосов
/ 16 апреля 2019

В этом случае вы можете просто создать представление для этого. Потребуется время для загрузки в первый раз. После выполнения запроса в следующий раз план загрузки загружается напрямую, не беспокоясь о выполнении запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...