Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка фильтрации  [new]
Вершинин
Member

Откуда:
Сообщений: 5
День добрый. Столкнулся с проблемой ,которая сводит с ума.

SELECT * FROM Cameras c WHERE CONTAINS(c.SearchData, '"Зелёный проспект, дом 26*"')
-- 9записей
SELECT * FROM Cameras c WHERE c.AddressId = 8350
--те же 9 записей
SELECT * FROM Cameras WHERE CONTAINS(SearchData, '"Зелёный проспект, дом 26*"') AND AddressId = 8350
--0 записей!!!

SELECT * FROM (
SELECT *
FROM Cameras c WHERE CONTAINS(c.SearchData, '"Зелёный проспект, дом 26*"')
) c1 WHERE c1.AddressId = 8350
--0 записей

SELECT c.ID, c1.Id, c.AddressId, c1.AddressId
FROM Cameras c
LEFT JOIN Cameras c1 ON c.Id = c1.Id AND c1.AddressId = 8350
WHERE CONTAINS(c.SearchData, '"Зелёный проспект, дом 26*"')
-- 9 записей, ВСЕ поля заполнены

SELECT c.ID, c1.Id, c.AddressId, c1.AddressId
FROM Cameras c
LEFT JOIN Cameras c1 ON c.Id = c1.Id AND c1.AddressId = 8350
WHERE CONTAINS(c.SearchData, '"Зелёный проспект, дом 26*"')
AND c1.Id IS NOT NULL
--0 записей

Совсем уж извращение:

SELECT * FROM (
SELECT c.ID as id1, c1.Id as id2--, c.AddressId, c1.AddressId
FROM Cameras c
LEFT JOIN Cameras c1 ON c.Id = c1.Id AND c1.AddressId = 8350 AND c1.Id IS NOT NULL
WHERE CONTAINS(c.SearchData, '"Зелёный проспект, дом 26*"')
) t WHERE id2 IS NOT NULL

Внутренний запрос - озвучивался выше, выдаёт 9 записей, все значения - не NULL
Внешний опять выдаёт 0 записей
Кто-то сталкивался? Есть какие-то решения? LIKE не подходит по быстродействию.

Спасибо за внимание! )
23 ноя 18, 18:39    [21743268]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка фильтрации  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Вершинин,

Как вариант такое бывает когнда с индексом беда. Если допустимо - перестройте или попробуйте для проверки запрос


SELECT * FROM Cameras WITH (INDEX(0)) WHERE CONTAINS(SearchData, '"Зелёный проспект, дом 26*"') AND AddressId = 8350


Это кстати, не представление?
23 ноя 18, 19:01    [21743286]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка фильтрации  [new]
Вершинин
Member

Откуда:
Сообщений: 5
TaPaK, Это не представление. Ваш запрос выдал 0 строк.
Индекс попробую перестроить ночью - база боевая. Натолкнули на мысль, кстати, на тестовой проверить. ))
23 ноя 18, 19:07    [21743295]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка фильтрации  [new]
Вершинин
Member

Откуда:
Сообщений: 5
TaPaK, на тестовой результат нормальный. Везде 9 строк о_О

Проблема возникает только на бою и когда фильтрация двойная...
23 ноя 18, 19:10    [21743298]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка фильтрации  [new]
Вершинин
Member

Откуда:
Сообщений: 5
TaPaK, спасибо за наводку.
Помог ребилд с отключением диакретических знаков

ALTER FULLTEXT CATALOG AddressCatalog
REBUILD WITH ACCENT_SENSITIVITY=OFF;
24 ноя 18, 03:00    [21743493]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить