Если вы используете правильно параметризованные запросы (с такими параметрами, как @CustomerID
вместо того, чтобы объединять вместе ваш оператор SQL), не должно быть большой разницы между хранимыми процедурами и простыми операторами SQL. Как планы выполнения для простых запросов, так и для хранимых процедур кэшируются SQL Server, и если они часто используются повторно, они не будут выбрасываться из кэшированного слишком быстро. Строго говоря, с точки зрения производительности хранимые процедуры на самом деле не приносят вам большой пользы.
Хранимые процедуры могут быть полезны, поскольку они могут обеспечить еще один уровень безопасности - если весь ваш доступ к данным проходит через хранимые процедуры, «обычным» пользователям, как правило, даже не нужны разрешения на чтение для базовых таблиц.
Что касается размера таблицы: если у вас есть правильное индексирование, простая операция поиска по индексу займет около 3-6 страниц в SQL Server, чтобы добраться до конечного уровня - это до нескольких миллионов страниц данных. Дело в том, что правильное индексирование , и это не всегда легко и очевидно сделать правильно.
Одним из наиболее важных аспектов в SQL Server является правильное получение индекса кластеризации , поскольку он определяет физический порядок ваших данных, а ключ кластеризации является наиболее реплицируемым / наиболее избыточным элементом данных в вашем сервер - так что вы хотите сделать это как можно более эффективным.
Ознакомьтесь с выдающимся сообщением в блоге Кимберли Трипп Дополнительные сведения о ключе кластеризации , а также изучите ее другие публикации в блоге, на которые она ссылается, чтобы получить хорошее представление о том, что делает хороший ключ кластеризации - это абсолютно необходимо , чтобы получить право!
Кимберли - Королева индексации на SQL Server - также содержит массу отличных постов в блоге о том, как выбирать хорошие некластеризованные индексы, а когда меньше, то больше (не переиндексировать вашу базу данных - это может быть даже хуже, чем отсутствие индексов вообще)