Убедитесь, что только «разумные» запросы

В нашей организации нам нужно разрешить сотрудникам фильтровать данные в нашем веб-приложении, предоставляя предложения WHERE. Это'Они долго работали, но иногда мы сталкиваемся с пользователями, которые предоставляют запросы, требующие полного сканирования таблиц на больших таблицах или неэффективных объединений и т. д.

Какой-то клоун может написать что-то вроде:

select * from big_table where
Name in (select name from some_table where name like '%search everything%')
or name in ('a', 'b', 'c')
or price < 20
or price > 40
or exists (select 1 from some_other_table where col1 + col2 + col3 = 4)
or exists (select 1 from table_a, table+b)

Очевидно, что это не лучший способ сделать запрос к этим таблицам с вычисленными значениями, неиндексированными столбцами, множеством OR 's и неограниченное соединение на table_a и table_b.

Но для пользователя это может иметь смысл.

И что's лучший способ, если таковой имеется, позволить внутренним пользователям предоставлять запрос к базе данных, обеспечивая при этом ее выигрышзаблокировать дюжину столов и повесить веб-сервер на 5 минут?

Я предполагаю, чтоs программным способом на c # / sql-server получить план выполнения запроса перед его выполнением. И если да, то какие факторы влияют на стоимость? Предполагаемая стоимость ввода / вывода? Ориентировочная стоимость процессора? Каковы были бы разумные пределы, чтобы сообщить пользователю, что его запрос "ничего хорошего?

РЕДАКТИРОВАТЬ: Мыre компания по исследованию рынка. У нас есть тысячи опросов, каждый со своими данными. У нас есть десятки исследователей, которые хотят разрезать эти данные произвольным образом. У нас есть инструменты, чтобы позволить им строить "действительный» фильтры с использованием графического интерфейса, но некоторые "продвинутые пользователи " хочу предоставить свои собственные запросы. Я понимаю, что это неЭто стандарт или лучшая практика, но как еще я могу позволить десяткам пользователей запрашивать таблицы для строк, которые они хотят, используя произвольно сложные условия и постоянно меняющиеся условия?

Ответы на вопрос(11)

Ваш ответ на вопрос