Вопросы с тегом «optimization»

10
Перебалансировано ли B-Tree при удалении данных из таблицы SQL Server с кластеризованным индексом?

У меня есть таблица в базе данных SQL Server с кластеризованным индексом по первичному ключу. Таблица имеет 1 миллион строк. Если я удаляю 10K строк из таблицы, реструктурируется ли индекс во время операции удаления? Операция удаления является частью хранимой процедуры. В то же время, более чем...

10
Оптимизирует ли PostgreSQL добавление столбцов с ненулевыми значениями по умолчанию?

При добавлении NOT NULLстолбцов со DEFAULTзначением - оптимизирует ли PostgreSQL эту операцию? Если в таблице n строк, неоптимизированный столбец alter-table-add-column даст n записей значения по умолчанию, что, очевидно, может быть очень болезненным. При оптимизации БД мгновенно создаст новый...

10
Какие правила определяют, когда SQL Server использует CTE в качестве «области оптимизации»?

Некоторое время назад Брент Озар опубликовал статью, в которой подробно описываются некоторые различия между SQL Server и PostgreSQL: Два важных различия между SQL Server и PostgreSQL Первый момент («CTE - это заборы для оптимизации») попался на глаза, поскольку очевидно, что в представленном...

10
Как «намекнуть» на кардинальность рекурсивного CTE?

Я использую следующий рекурсивный CTE в качестве минимального примера, но в целом оптимизатор должен использовать «угаданные» кардинальные значения по умолчанию для рекурсивных CTE: with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w; /* n --- 1 2 3 4 5 */...

10
Как определить затраты / выгоды от добавления индекса?

По словам Крейга Рингера : Хотя обычно хорошей идеей является создание индекса для (или включая) столбцов внешнего ключа ссылочной стороны, это не обязательно. Каждый добавляемый вами индекс немного замедляет работу DML, поэтому вы платите за производительность за каждый INSERT, UPDATEили DELETE....

10
Почему первичный (кластерный) ключ не используется в этом запросе?

У меня есть таблица SQL Server 2008 R2, структура схемы выглядит следующим образом: CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT...

9
Как я могу оптимизировать этот запрос MySQL дальше?

У меня есть запрос, который занимает особенно много времени (15+ секунд), и он только ухудшается со временем по мере роста моего набора данных. Я оптимизировал это в прошлом и добавил индексы, сортировку на уровне кода и другие оптимизации, но это требует некоторой дальнейшей доработки. SELECT...

9
Преимущества выполнения запроса OPTIMIZE TABLE в MySQL DB Server

Я хотел бы знать, какие преимущества [действительно практические] можно получить, запустив OPTIMIZE TABLE tbl_nameзапрос в MySQL Server. Я проверил это один раз и обнаружил, что после того, как это будет выполнено, следующее попадание в БД может занять много времени из-за перемещения фрагментов или...

9
«Предупреждения: операция вызвала остаточный ввод-вывод» в сравнении с поиском по ключевым словам

Я видел это предупреждение в планах выполнения SQL Server 2017: Предупреждения: Операция вызвала остаточный IO [sic]. Фактическое количество прочитанных строк было (3,321,318), но количество возвращенных строк было 40. Вот фрагмент из SQLSentry PlanExplorer: Чтобы улучшить код, я добавил...

9
REBUILD - Кластерный индекс, ТАБЛИЦА или оба?

У меня проблемы с поиском окончательного источника информации об этом где-либо, так что, надеюсь, гуру может дать мне ответ здесь. У меня есть очень большая таблица, к которой мы должны были добавить столбец. Кластерный индекс довольно сильно фрагментирован, и я хочу сделать это, ALTER INDEX...

9
SQL Server оценивает функции один раз для каждой строки?

У меня есть такой запрос: SELECT col1 FROM MyTable WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) BETWEEN col2 AND col3 ; Это дает всплывающую подсказку о плане выполнения, подобную этой: Выполняется ли dateaddчасть предикатов поиска для каждой строки в запросе? Или SQL Server вычисляет значение...

9
OPTION FORCE ORDER повышает производительность, пока строки не будут удалены

У меня есть несколько сложный запрос SQL Server 2008 (около 200 строк довольно плотного SQL), который не выполнялся так, как мне было нужно. Со временем производительность упала с примерно 0,5 секунды до примерно 2 секунд. Взглянув на план выполнения, стало совершенно очевидно, что путем изменения...

9
Многорядная вставка против нескольких однорядных вставок

В моем приложении я делаю многострочные вставки, когда могу, просто потому, что это уменьшает количество циклов между БД и приложением. Однако мне было любопытно, есть ли другие преимущества? Например, если несколько строк вставляются одновременно, как это: insert into tbl (c1, c2) values (v1, v2)...

9
Самостоятельное соединение по первичному ключу

Рассмотрим этот запрос, который состоит из Nсамостоятельных соединений: select t1.* from [Table] as t1 join [Table] as t2 on t1.Id = t2.Id -- ... join [Table] as tN on t1.Id = tN.Id Он создает план выполнения с N сканированием кластеризованного индекса и N-1 объединениями слиянием. Честно говоря, я...

9
MySQL: delete… where..in () против delete..from..join и заблокированные таблицы при удалении с помощью подвыбора

Отказ от ответственности: прошу прощения за отсутствие знаний о внутреннем устройстве базы данных. Здесь это идет: Мы запускаем приложение (не написанное нами), которое имеет большую проблему с производительностью при периодической очистке базы данных. Запрос выглядит так: delete from...

9
Заблокированные сеансы, ожидающие с типами ожидания PAGELATCH_ *?

Отредактировано: почему отчеты о сеансах блокируются, но ожидают PAGELATCH_*, а не LCK_M_связаны с типами ожидания? Ранее я предполагал, что SQL-сервер будет сообщать о блокирующих сеансах только в столбце blocking_session_Id. Если заблокированные сеансы ожидали логической блокировки, а не...

9
Получение сканирования, хотя я ожидаю поиска

Мне нужно оптимизировать SELECTоператор, но SQL Server всегда выполняет сканирование индекса, а не поиск. Это запрос, который, конечно, находится в хранимой процедуре: CREATE PROCEDURE dbo.something @Status INT = NULL, @IsUserGotAnActiveDirectoryUser BIT = NULL AS SELECT [IdNumber], [Code],...

9
План выполнения НЕ использует INDEX, он использует сканирование таблицы

Я знаю, что когда дело доходит до использования индекса или сканирования таблицы, SQL Server использует статистику, чтобы определить, какая из них лучше. У меня есть таблица с 20 миллионами строк. У меня есть индекс (SnapshotKey, Measure) и этот запрос: select Measure, SnapshotKey, MeasureBand from...