Проблема производительности при извлечении данных из поля varbinary(MAX)
как я могу улучшить производительность оператора sq, содержащего тип данных Varbinary(Max)
структура таблицы
CREATE TABLE [dbo].[Table_1]( [EmpID] [numeric](18, 0) NOT NULL, [SrNo] [numeric](18, 0) NOT NULL, [Type] [varchar](10) NULL, [FileName] [varchar](100) NULL, [D1] [varchar](50) NULL, [D2] [varchar](50) NULL, [Data] [varbinary](max) NULL, [CreatedBy] [varchar](50) NULL, [CreatedOn] [datetime] NULL, CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ( [EmpID] ASC, [SrNo] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
SELECT Data FROM [Table_1] where EmpID=661 and SrNo=2 the above Query takes about 2 to 3 seconds to execute because it contains blob data SELECT FileName,Type FROM [Table_1] where EmpID=661 and SrNo=2 the above Query takes about 0 seconds to execute
Что я уже пробовал:
Checked Indexing of the Table
phil.o
Столбец varbinary вообще не должен индексироваться, по крайней мере, если он содержит большие куски данных. Индексирование такого типа данных может привести к огромному снижению производительности.
kedar001
моя таблица имеет первичный ключ только для столбцов ([EmpID],[SrNo]). как я могу улучшить производительность. из-за этого я также сталкиваюсь с тупиковыми проблемами
phil.o
В среде SQL-Server Management Studio (SSMS) у вас есть возможность проанализировать запрос и посмотреть, где он проводит большую часть своего времени.
Вот список возможных источников информации о том, как анализировать производительность вашего запроса:
устранение неполадок производительности запросов ssms[^]
OriginalGriff
Ответ обновлен.
kedar001
пожалуйста, проверьте https://www.codeproject.com/Questions/3301374/Transactionscope-deadlocked-issue-in-concurruncy
основная причина тупика-это время, необходимое для удаления/вставки данных в таблицу Table_1
есть ли какой-то другой способ преодолеть эту проблему?.
OriginalGriff
В вашем запросе нет delete или insert - SELECT никоим образом не изменяет данные...
kedar001
Извините, что это мое наблюдение. когда я проверяю sql profiler, время, необходимое для удаления записи частиц, составляет около 3 секунд.
то же самое время требуется, чтобы выбрать запись.