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

В контексте базы данных оптимизация относится к процессу выбора оптимизатором запросов эффективного физического плана выполнения.


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

2
Почему это быстрее и безопаснее в использовании? (ГДЕ первая буква в алфавите)
Короче говоря, мы обновляем маленькие таблицы людей со значениями из очень большой таблицы людей. В недавнем тесте это обновление заняло около 5 минут. Мы наткнулись на то, что кажется самой глупой из возможных оптимизаций, которая, похоже, работает отлично! Тот же запрос теперь выполняется менее чем за 2 минуты и дает …

2
Расчет количества на основе журнала изменений
Представьте, что у вас есть следующая структура таблицы: LogId | ProductId | FromPositionId | ToPositionId | Date | Quantity ----------------------------------------------------------------------------------- 1 | 123 | 0 | 10002 | 2018-01-01 08:10:22 | 5 2 | 123 | 0 | 10003 | 2018-01-03 15:15:10 | 9 3 | 123 | 10002 | …

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

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

1
Как «намекнуть» на кардинальность рекурсивного 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 …

1
Преобразование типов в выражении может повлиять на «CardinalityEstimate» при выборе плана запроса?
Я поддерживаю архивную базу данных, которая хранит исторические данные в секционированных представлениях. Столбец разделения - это дата и время. Каждая таблица в представлении хранит данные за один месяц. Мы ограничиваем события в каждой таблице проверочным ограничением в столбце datetime. Это позволяет оптимизатору ограничивать таблицы, в которых ищутся запросы, которые фильтруются …

3
Как обычно хранится запись каждого изменения строки в базе данных?
В проекте, над которым я работаю, каждое изменение строк в некоторых таблицах базы данных должно отслеживаться для дальнейшего аудита или отката. Должно быть легко найти, кто изменил строку, с какого IP-адреса и когда, и иметь возможность восстановить предыдущую версию. Подобная вещь используется, например, Stack Exchange. Когда я изменяю чужой вопрос, …

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

3
Самостоятельное соединение по первичному ключу
Рассмотрим этот запрос, который состоит из 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 объединениями слиянием. Честно говоря, я не вижу …

1
Постоянный вычисляемый столбец, вызывающий сканирование
Преобразование обычного столбца в постоянный вычисляемый столбец приводит к тому, что этот запрос не может выполнять поиск индекса. Почему? Протестировано на нескольких версиях SQL Server, включая 2016 SP1 CU1. Repros С вычисляемым столбцом С обычной колонкой Беда в том , с table1, col7. Таблицы и запросы являются частичной (и упрощенной) …

3
План выполнения НЕ использует INDEX, он использует сканирование таблицы
Я знаю, что когда дело доходит до использования индекса или сканирования таблицы, SQL Server использует статистику, чтобы определить, какая из них лучше. У меня есть таблица с 20 миллионами строк. У меня есть индекс (SnapshotKey, Measure) и этот запрос: select Measure, SnapshotKey, MeasureBand from t1 where Measure = 'FinanceFICOScore' group …

5
Получение сканирования, хотя я ожидаю поиска
Мне нужно оптимизировать SELECTоператор, но SQL Server всегда выполняет сканирование индекса, а не поиск. Это запрос, который, конечно, находится в хранимой процедуре: CREATE PROCEDURE dbo.something @Status INT = NULL, @IsUserGotAnActiveDirectoryUser BIT = NULL AS SELECT [IdNumber], [Code], [Status], [Sex], [FirstName], [LastName], [Profession], [BirthDate], [HireDate], [ActiveDirectoryUser] FROM Employee WHERE (@Status IS …

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.