Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
303 / 267 / 114
Регистрация: 05.06.2013
Сообщений: 848
1

Самый быстрый запрос что бы узнать, есть ли хотя бы одна подходящая запись в столбце таблицы

27.05.2015, 12:15. Показов 3141. Ответов 2
Метки нет (Все метки)

Имеется довольно большая БД.
Довольно часто для нахождение "Где это лежит?" используем самописную прилагу которая осуществляет поиск по всей БД.
Если вкратце, то запросом
SQL
1
SELECT TABLE_NAME, column_name FROM information_schema.columns;
дергаем все столбцы и таблицы, после чего проходим циклом по всем найденным записям
SQL
1
SELECT COUNT(*) FROM <table_name> WHERE <column_name> = '<искомый параметр>';
До сих пор в принципе устраивало, поиск по всей БД(9800 столбцов) шел около 5 минут.
Однако появилась новая БД, в которой уже 45000 столбцов(и соответственно столько же выполняется запросов), и стал более актуальным вопрос производительности.

Как максимально быстро и дешево узнать есть ли в данном столбце хотя бы одна запись, удовлетворяющая условию?

На текущий момент склоняюсь к тому, что быстрее всего будет
SQL
1
SELECT top 1 1 FROM <table_name> WHERE <column_name> = '<искомый параметр>';
Если находит хотя бы одну запись - возвращает 1.
Однако смущает TOP 1, не выполняется ли в его плане построения выборка всех записей, потом их order by, и только потом отбор первой?

Может есть еще более быстрый способ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.05.2015, 12:15
Ответы с готовыми решениями:

Верно ли, что среди точек есть хотя бы одна, принадлежащая квадрату?
Дано натуральное n, действительные x_1, y_1, ... x_n, y_n Выяснить, верно ли, что среди точек...

Найти вероятность, что среди выбранной обуви есть хотя-бы одна пара
Помогите пожалуйста решить задачку :cry: Заранее огромное спасибо) В темной кладовой лежат 3 пары...

Проверить что среди трех чисел есть хотя бы одна пара взаимно противоположных
Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара взаимно...

Проверить что среди трех чисел есть хотя бы одна пара взаимно противоположных
Помогите Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара...

2
3202 / 1941 / 688
Регистрация: 02.06.2013
Сообщений: 4,752
27.05.2015, 12:49 2
Цитата Сообщение от Jefe Посмотреть сообщение
Однако смущает TOP 1, не выполняется ли в его плане построения выборка всех записей, потом их order by, и только потом отбор первой?
А план выполнения посмотреть не?
Цитата Сообщение от Jefe Посмотреть сообщение
Может есть еще более быстрый способ?
Для проверки существования строк придумали предикат exists.
1
303 / 267 / 114
Регистрация: 05.06.2013
Сообщений: 848
27.05.2015, 15:00  [ТС] 3
Спасибо, через exists получилось чуть быстрее.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2015, 15:00

Верно ли, что среди трех чисел есть хотя бы одна пара взаимно противоположных
1.Проверить истинность выражения. Cреди трех данных целых чисел (а, b,c) есть хотя бы одна пара...

Определить, верно ли, что среди чисел есть хотя бы одна пара взаимно противоположных
Среди чисел а , б ,с есть хотя бы одна пара взаимно противоположных чисел : Составить программу...

Найти вероятность того, что во взятых папках есть хотя бы одна полная рукопись
Подскажите с решением пожалуйста 5 рукописей находятся в 10 папках, каждая рукопись в 2 папках....

Выяснить, верно ли что в заданном предложении есть хотя бы одна пара соседствующих одинаковых символов.
Выяснить, верно ли что в заданном предложении есть хотя бы одна пара соседствующих одинаковых...

какой запрос самый быстрый?
здравствуйте вот есть 7 таблиц с двумя полями , в первой полный список категорий, в...

Верно ли, что среди четырех заданных пользователем целых чисел есть хотя бы одна пара соспадающих
Написать программу, которая проверяет истиннсоть высказывания: &quot;Среди четырех заданных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru