Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Select Like / 6 сообщений из 6, страница 1 из 1
01.12.2020, 16:58
    #40023706
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Like
День добрый!
Есть условная таблица (код,имя объекта. цвет объекта) ~2кк записей
T(id int, obj_name nvarchar(20), color_name nvarchar(20))

вопрос как красиво решить следующию задачу, надо обеспечить поиск объекта и учесть что в поисковой строке может быть записаны как:
[цвет]+ПРОБЕЛ+[наименование];
[наименование]+ПРОБЕЛ+[цвет];
ТОЛЬКО [цвет];
ТОЛЬКО [наименование].

Я это решил следующим способом:

SELECT TOP 100 *
FROM T
WHERE
(UPPER(color_name)+' '+UPPER(obj_name)) LIKE @find_text
OR
(UPPER(obj_name)+' '+UPPER(color_name)) LIKE @find_text

но скорость не радует, есть еще способ кроме VIEW? что бы поднять скорость поиска?
...
Рейтинг: 0 / 0
01.12.2020, 17:04
    #40023709
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Like
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with x as ( select s from STRING_SPLIT(@find_text) as t(s))
SELECT TOP 100 * 
FROM T inner join x on  color_name = x.s or obj_name = x.s

with x as ( select s from STRING_SPLIT(@find_text) as t(s))
SELECT TOP 100 * 
FROM T inner join x on  color_name = x.s 
union
SELECT TOP 100 * 
FROM T inner join x on  obj_name = x.s
...
Рейтинг: 0 / 0
01.12.2020, 17:24
    #40023713
Mixon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Like
aleks222,

Извиняюсь, забыл уточнить SQL сервер 2008 R2
...
Рейтинг: 0 / 0
01.12.2020, 17:58
    #40023721
Oleg_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Like
Mixon, а obj_name или color_name могут быть NULL ?
И попробуйте вместо OR сделать 2 запроса объединив их UNION.
...
Рейтинг: 0 / 0
01.12.2020, 18:19
    #40023724
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Like
коллэйшен Case Sensitive что ли?
если нет, апперы убирайте и индексы сделайте по obj_name и по color_name
...
Рейтинг: 0 / 0
02.12.2020, 07:18
    #40023837
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select Like
Mixon
aleks222,

Извиняюсь, забыл уточнить SQL сервер 2008 R2

Ну и чо? Если сам не можешь - в интеренетах есть масса STRING_SPLIT.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Select Like / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]