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

Откуда:
Сообщений: 13
Нужно создать фильтрованный индекс используя IN, EXISTS

При включении статистики активных запросов в мой индекс даже не заходит, помогите пожалуйста

[id] [Passport] [Full_Name] [Telephone][Adress][Date_Birthday][id_CountryLiving]


вот код:

CREATE NONCLUSTERED INDEX Filter  ON Passengers (Full_Name)  WHERE Telephone is not null
DROP INDEX Filter  ON Passengers 

 SELECT id, Passport, Full_Name, Telephone
FROM Passengers
WHERE EXISTS (
   SELECT *
   FROM Passengers
   WHERE Telephone = null )

Как сделать чтобы в индекс всё таки заходило!

К сообщению приложен файл. Размер - 25Kb


Сообщение было отредактировано: 25 ноя 19, 15:28
25 ноя 19, 15:24    [22024750]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
TaPaK
Member

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

а что это должно делать?
25 ноя 19, 15:30    [22024758]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
TaPaK, Просто задали задания с индексами. Нужно продемонстрировать работу
25 ноя 19, 15:31    [22024761]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
wearedogs
WHERE Telephone = null
Садись. Два!! ©
25 ноя 19, 15:35    [22024768]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Читаем раздел про фильтрованные индексы здесь:
https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-index-transact-sql?view=sql-server-ver15
25 ноя 19, 15:40    [22024773]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4686
iap
wearedogs
WHERE Telephone = null
Садись. Два!! ©


Истина НАЛЛЕ, но не всем дано её постичь.

Какой из запросов вернет 1 ?

SELECT 1
WHERE 1 = NULL 

SELECT 1
WHERE 1 <> NULL 

SELECT 1
WHERE NOT 1 = NULL 

SELECT 1
WHERE NOT 1 <> NULL 

SELECT 1
WHERE NULL =  NULL 

SELECT 1
WHERE NOT NULL =  NULL

SELECT 1
WHERE NOT NOT NULL =  NULL

SELECT 1
WHERE NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NULL =  NULL OR NOT NOT NOT NOT NOT NOT NOT NOT NOT NOT NULL <> NULL


Ответ

+
никакой
25 ноя 19, 15:44    [22024781]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
iap, a_voronin, я уже голову изломал я не могу сделать это задание, подскажите как исправить
25 ноя 19, 15:50    [22024792]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
wearedogs
iap, a_voronin, я уже голову изломал я не могу сделать это задание, подскажите как исправить
Почитайте по данной ссылке для начала. Там по-русски.
25 ноя 19, 15:52    [22024793]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
TaPaK
Member

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

а если будут познавать вашу истину с ANSI_NULLS OFF?
25 ноя 19, 15:53    [22024794]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
iap, ещё в начале дня её прочитал, никакой инфы для работающего примера не получил
25 ноя 19, 15:56    [22024799]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
И так не идёт
CREATE NONCLUSTERED INDEX Filter  ON Airport (Town)  WHERE Name = 'Домодедово'
DROP INDEX Filter  ON Airport

      SELECT *
FROM Airport
WHERE Name IN ('Домодедово')  and Town = 'Москва'
25 ноя 19, 15:59    [22024802]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
TaPaK
Member

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

а DROP сразу это что бы что?
25 ноя 19, 16:07    [22024813]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
TaPaK,
часто редактирую его, вдруг заработает. Удобно когда все близко находится
25 ноя 19, 16:08    [22024815]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
wearedogs
И так не идёт
CREATE NONCLUSTERED INDEX Filter  ON Airport (Town)  WHERE Name = 'Домодедово'
DROP INDEX Filter  ON Airport

      SELECT *
FROM Airport
WHERE Name IN ('Домодедово')  and Town = 'Москва'
Чего это такое??? Создаёте индекс и тут же его дропаете?
Кстати, дропаете неправильно. Надо Airport.Filter писать.

А SELECTом чего добивались?
25 ноя 19, 16:11    [22024818]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
iap,
у меня много индексов, поэтому я выделяю то, что нужно выполнить. Селект у меня а и вообще весь пример, чтобы это индекс хоть как-то заработал, мне не важна смысловая составляющая, я просто хочу чтобы он работал
25 ноя 19, 16:14    [22024821]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4686
wearedogs
не важна смысловая составляющая, я просто хочу чтобы он работал


С мега NULL-ом в голове дури много на селе,
Чтоб село все рассчитать надо NULL-ы понимать.
25 ноя 19, 16:17    [22024827]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
wearedogs
Member

Откуда:
Сообщений: 13
a_voronin, спасибо
25 ноя 19, 16:18    [22024829]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3681
wearedogs
iap, ещё в начале дня её прочитал, никакой инфы для работающего примера не получил


Вот, правильно, это баловство читать только время терять
26 ноя 19, 20:36    [22026091]     Ответить | Цитировать Сообщить модератору
 Re: Индексирование с предикатами IN EXISTS  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
 SELECT id, Passport, Full_Name, Telephone
FROM Passengers
WHERE EXISTS (
   SELECT *
   FROM Passengers
   WHERE Telephone = null )


Это ваш (единственный) тестовый запрос ? А ничего, что подзапрос c EXISTS некоррелированный? Хотя после "= null " это уже пустяки. Как я понимаю, после полугода перерыва студенты забывают весь SQL, что учили в прошлом семестре. А им уже про индексы вещают. Надо что-то с этим делать.
27 ноя 19, 11:11    [22026417]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить