Возьмите следующий SQL-запрос:
SELECT Account, Amount AS Deposit, 0.00 AS Withdrawal, Date
FROM Deposits
WHERE Account = @Account
UNION
SELECT Account, 0 AS Expr1, Amount, Date
FROM Withdrawals
WHERE Account = @Account
ORDER BY Date Desc
В отличие от:
SELECT Account, TransactionType, Amount, Date
FROM Transactions
WHERE Account = @Account
ORDER BY Date Desc
В первом запросе депозиты и снятие денег хранятся в разных таблицах и всегда, когда их нужно увидетьвместе, например, при предъявлении банковской выписки, они объединены вместе.Во втором запросе все транзакции, депозиты и снятия хранятся в одной таблице, а тип транзакции дифференцируется через столбец TransactionType.Результаты запроса не совсем совпадают, но предположим, что клиент доволен либо как конечный результат.
Есть ли какая-то причина производительности, почему настройка базы данных с использованием первой схемы лучше или хуже, чем второйсхема?
РЕДАКТИРОВАТЬ: просто для ясности, я хотел бы отметить, что причина, по которой я задавал этот вопрос, состоит в том, чтобы выяснить, есть ли производительность преимущество в ведении таблицменьше и используя UNION, когда это необходимо, по сравнению с одной большой таблицей, где я бы использовал предложение WHERE для поиска различных типов данных.Я использовал приведенный выше пример, чтобы лучше выразить свой вопрос.Совет по поводу того, какая схема лучше по другим причинам, приветствуется, но, пожалуйста, постарайтесь также ответить на вопрос.