2016-02-25 4 views
0

Я работаю на 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_Customer1Order_Customer2, и т.д. - вместо ??

+1

Ни один вид (стандартные виды), ни несколько таблиц не являются ответом на вашу проблему. Индекс или два могут в значительной степени помочь производительности, но они большие, но это зависит от того, насколько часто данные обновляются (или добавляются или удаляются). Если это база данных test/dev, посмотрите на индексирование. Если это производственная база данных, будьте осторожны, индексирование может ускорить выбор, но они могут замедлять обновления/вставки/удаления. –

+1

Ни то, ни другое. Вы должны просто создать индекс в таблице Orders, который будет состоять из столбца 'idCustomer' и столбца' OrderDate'. –

+0

Регулярные 'views' ничего не делают - они полностью расширены, а исходный код' view' становится частью внешнего запроса. Точно так же, как не было никакого «взгляда». –

ответ

0

Я не рекомендую создать представление для каждого клиента .. но вы можете добавить индекс в таблице http://www.w3schools.com/sql/sql_create_index.asp

Также вы можете добавить индекс на ваш взгляд, чтобы повысить селектов производительность https://technet.microsoft.com/en-us/library/ms187864(v=sql.105).aspx

У меня есть таблица содержит более 700 000 записей и применение индексации в таблице и просмотре очень помогли мне

+0

@henjensen, если мой ответ решит вашу проблему, отметьте его как решенный, чтобы другие могли его использовать .. спасибо –

0

Для этой же модели данных используйте ту же таблицу (ы). Более одной таблицы или представлений не хороший дизайн,

  • Вы должны смотреть на плане выполнения, а также создавать необходимые индексы,
  • После настройки производительности с индексами таблицы можно использовать индексированные представления, https://msdn.microsoft.com/en-us/library/ms191432(v=sql.120).aspx