2016-09-26 4 views
0

Я использую базу данных Azure SQL. Если у меня 150K записей в таблице Building. Residental колонка типа bit. Половина записей имеет Residental = 1. Какой из этих двух запросов лучше с точки зрения производительности в моем случае?Производительность запроса SQL UPDATE

UPDATE p.Building 
SET Residental = 1 
WHERE References > 100 

UPDATE p.Building 
SET Residental = 1 
WHERE References > 100 
AND Residental <> 1 

UPDATE:

Это результаты профилировщика. Сначала лучше догадаться? А что, если все записи имеют Residental = 1 или 0? Это влияет на результат профилирования? Я попытался выполнить тесты, но результаты профилирования почти одинаковы.

enter image description here

+1

Я удалил несовместимые теги базы данных. Пожалуйста, пометьте вопрос в базе данных, которую вы фактически используете. –

+0

Я бы предположил, что второй будет быстрее.Будет меньше обновлений, и если Residental будет проиндексирован, будет меньше читаемых –

+0

Это что-то, что произойдет часто или только один раз? – n8wrl

ответ

2

EDIT

Теперь, когда вы опубликовали свой объяснить выход, пару вещей:

  • Похоже, у вас нет индекса на что-нибудь, что ваш СУБД использует. Если бы я был вами, я бы добавил индекс в поле «Ссылки» и поле «Жилище» и повторно выполнил профилирование.
  • Для второго запроса вы можете добавить индекс с несколькими столбцами в оба поля, что, вероятно, лучше всего подходит для производительности.
  • Ваше «кластерное сканирование индексов» должно измениться, чтобы сообщить вам, что оно использует ваш новый индекс.

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

How does database indexing work?

Оригинал ответа

Какой из этих двух запросов лучше с точки зрения производительности в моем случае?

Сортировка ответ, нет никакого способа узнать, с информацией, предоставленной Вами. Вам нужно взглянуть на план, который ваша RDBMS собирается использовать для выполнения запроса. Вы не сказали, какая база данных, так что здесь документы MySQL:

http://dev.mysql.com/doc/refman/5.7/en/explain.html

Это в основном зависит от индексов и статистики и поставщика БД, но вы можете создать всю эту информацию, объясняя свой запрос. Опубликуйте результаты объяснения для обоих запросов, и вы получите ответы.

В настоящее время ответ это зависит

+0

Благодарим вас за подробный ответ! – AsValeO

Смежные вопросы