выберите запрос для сервера sql - PullRequest
2 голосов
/ 01 мая 2011

У меня есть одна таблица продуктов.в моей таблице есть поля, такие как productid, цена, количество, итоговое значение.

, чем то, как я умножаю цену, количество полей и ответ, сохраненный в итоговом поле.

Ответы [ 2 ]

5 голосов
/ 01 мая 2011

Не храните производные значения в ваших таблицах - это плохой дизайн.

Поскольку итог - это произведение цены и количества, вы всегда можете рассчитать его, когда у вас есть эти значения - зачем хранить его?Если вы делаете это, вы создаете возможность для несовместимых данных в вашей базе данных.

Получение такого значения непосредственно из SQL тривиально, без необходимости хранить его:

SELECT price, quantity, price * quantity AS total
FROM product

Обновление:

Как отмечает @Martin, в SQL Server 2005+ есть вычисляемые столбцы , которые не являются постоянными или проиндексированными столбцами, которые для удобства возвращают результаты вычислений.

Я подчеркиваю, что это столбцы, которые не сохранились.

1 голос
/ 02 мая 2011

Вы можете создать вычисляемый столбец для этого

ALTER TABLE Products ADD total AS price * quantity

С приведенным выше определением столбец не сохраняется и не индексируется, поэтому это просто удобство для ваших запросов.

Вы можете рассмотретьиндексировать такой вычисляемый столбец, если ваши запросы должны были использовать total в предикате поиска.Любые такие постоянные значения автоматически поддерживаются SQL Server, что позволяет избежать потенциальных проблем с аномалиями данных.

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

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