SQL Server

Повечето бази данни, които съм виждал, имат „общи“ процедури с много параметри. Като правило това са процедури за търсене на нещо в базата данни или процедури, които формират набор от данни за отчет. Освен това, колкото повече параметри, толкова по-рядко се използват.
Тоест процедурата може например да търси клиент по име, част от името, клиентски номер, номер на акаунт, но естествено се използват едновременно много ограничен брой параметри. Всъщност при търсене на клиент по някой от неговите уникални номера (TIN, SNILS, IKK и др.) Няма
има смисъл да се изясни пълното му име или град на пребиваване.
Вътре в процедурите по правило има една „основна“ „универсална“ заявка, която отчита всички параметри по време на филтрирането. Както всичко универсално, няма да се изпълни бързо, дори ако "покриете" цялата таблица с индекси - индексите са добри за търсене на нещо конкретно.
За да оптимизирам такива общи процедури, бих препоръчал да започнем с дефинирането на най-типичните, често използвани варианти на комбинации от действително използваните параметри и тези комбинации да прилагат отделни специализирани заявки. По време на оптимизацията само 4 комбинации от параметри на процедурата за търсене бяха използвани не само в 95% от извикванията на процедурата, но и създадоха до 10% от общото натоварване на сървъра.