Я работаю на SQL Server 2014 и имею таблицу Customer
, связанную с таблицей с заказами. Стол Order
имеет, например, 500 000 рядов - 100 000 для каждого из 5 клиентов. Поэтому при поиске всех заказов на определенную дату для конкретного клиента, SQL будетSQL - лучшая производительность с видом
Select *
from Orders
Where idCustomer = 1
and OrderDate = '20160225'
Этот запрос должен выглядеть через 500.000 записей, чтобы найти соответствующие заказы.
было бы лучше для производительности, чтобы создать 5 представлений, представление для каждого клиента, а затем запрашивая мнение:
Select *
from View_Orders_Customer1
Where OrderDate = '20160225'
Или я должен создать 5 таблиц Order_Customer1
Order_Customer2
, и т.д. - вместо ??
Ни один вид (стандартные виды), ни несколько таблиц не являются ответом на вашу проблему. Индекс или два могут в значительной степени помочь производительности, но они большие, но это зависит от того, насколько часто данные обновляются (или добавляются или удаляются). Если это база данных test/dev, посмотрите на индексирование. Если это производственная база данных, будьте осторожны, индексирование может ускорить выбор, но они могут замедлять обновления/вставки/удаления. –
Ни то, ни другое. Вы должны просто создать индекс в таблице Orders, который будет состоять из столбца 'idCustomer' и столбца' OrderDate'. –
Регулярные 'views' ничего не делают - они полностью расширены, а исходный код' view' становится частью внешнего запроса. Точно так же, как не было никакого «взгляда». –