|
Select Like
|
|||
---|---|---|---|
#18+
День добрый! Есть условная таблица (код,имя объекта. цвет объекта) ~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? что бы поднять скорость поиска? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 16:58 |
|
Select Like
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 17:04 |
|
Select Like
|
|||
---|---|---|---|
#18+
aleks222, Извиняюсь, забыл уточнить SQL сервер 2008 R2 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 17:24 |
|
Select Like
|
|||
---|---|---|---|
#18+
Mixon, а obj_name или color_name могут быть NULL ? И попробуйте вместо OR сделать 2 запроса объединив их UNION. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 17:58 |
|
Select Like
|
|||
---|---|---|---|
#18+
коллэйшен Case Sensitive что ли? если нет, апперы убирайте и индексы сделайте по obj_name и по color_name ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2020, 18:19 |
|
|
start [/forum/topic.php?fid=46&msg=40023713&tid=1685351]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
72ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 156ms |
0 / 0 |