Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 неперевариваемый filtered index  [new]
o-o
Guest
имеется таблица-куча:
CREATE TABLE [staging].[RSAR_fg_proc_T](
	[NUM_PRAT] [int] NOT NULL,
	[CODICEPROC] [int] NOT NULL,
	[chiusura_dta] [int] NULL,
	[assegnazione_dta] [int] NULL,
	[oggi_dta] [int] NULL,
	[vale] [int] NOT NULL
) ON [PRIMARY]

в ней 21.193.056 строк, 725.552 из них имеют vale = 0
(остальные = 1, поле int, NOT NULL)
создаю индекс:
create index ix2_RSAR_fg_proc_T_vale_0 on staging.RSAR_fg_proc_T(CODICEPROC)
where vale = 0;

фильтрованный.
под большой и нудный запрос, где фильтр ровно такой же: where vale = 0
+ мой запрос не просит vale in the query result set.

вроде vale можно никак не включать, вот БОЛ:
Create Filtered Indexes
A column in the filtered index expression does not need to be a key or included column in the filtered index definition
if the filtered index expression is equivalent to the query predicate
and the query does not return the column in the filtered index expression with the query results.

A column in the filtered index expression should be a key or included column in the filtered index definition
if the query predicate uses the column in a comparison that is not equivalent to the filtered index expression.

A column in the filtered index expression should be a key or included column in the filtered index definition
if the column is in the query result set.

Create Filtered Indexes

я уже вообще упрощаю запрос до однотабличного,
он просит только CODICEPROC:
select CODICEPROC
from staging.RSAR_fg_proc_T
where vale = 0

мало, что он не использует мой фильтрованный индекс,
он предлагает свой, нефильтрованный, и чтоб vale был там ключевым полем.
а на основании чего и где такое прописано?
они желают построить более широкий и длинный индекс,
а чем мой их не устраивает, не пишут.

тогда я его прописываю явно хинтом и меня посылают:
Msg 8622, Level 16, State 1, Line 1
Query processor could not produce a query plan because of the hints defined in this query. Resubmit the query without specifying any hints and without using SET FORCEPLAN.


подскажите, плиз, чем ему не угодил мой индекс

К сообщению приложен файл. Размер - 115Kb
6 окт 15, 17:07    [18242609]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o,

может не в той базе создан индекс?

К сообщению приложен файл. Размер - 35Kb
6 окт 15, 17:17    [18242703]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
в той, в той.
сперва в продакшене, теперь на тестовом.
и индекс он видит, он же сразу орет, что для такого не может план создать.
индекс вон на картинке в Object Explorer,
а текст создания в окне запроса строкой выше.
могу любые доказательства существования индекса предоставить
6 окт 15, 17:29    [18242790]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
0-0
Guest
o-o,

А что за первый индекс, по которому происходит scan?
Сколько записей в таблице и сколько записей удовлетворяющих условию (vale = 0)?
6 окт 15, 17:31    [18242810]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
0-0
Guest
0-0
o-o,

А что за первый индекс, по которому происходит scan?
Сколько записей в таблице и сколько записей удовлетворяющих условию (vale = 0)?


второй вопрос снимается:
в ней 21.193.056 строк, 725.552 из них имеют vale = 0
6 окт 15, 17:33    [18242820]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
вот указываю несуществующий индекс, он сразу другое сообщает:
Msg 308, Level 16, State 1, Line 1
Index 'ix3_RSAR_fg_proc_T_vale_0' on table 'staging.RSAR_fg_proc_T' (specified in the FROM clause) does not exist.


К сообщению приложен файл. Размер - 109Kb
6 окт 15, 17:36    [18242840]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
0-0,

первый вопрос тоже снимите,
там Table Scan,
вы поди не мой скрин смотрите, а чурюпахин
6 окт 15, 17:37    [18242846]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
он индекс видит, он его НЕ МОЖЕТ использовать.
как будто ему чего-то не хватает.
а как может не хватать, если я всего одно поле заказываю и оно ключ индекса?
а еще меня бесит, что в AdventureWorks не воспроизводится
6 окт 15, 17:41    [18242868]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
а с set-ами что? у меня ошибка выдается при указании хинтом фильтрованного индекса, если ansi_warnings off. правда, ошибка прямо говорит про неправильный set.
6 окт 15, 17:41    [18242871]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
ну в этой сессии вроде все путем,
индекс создан в ней же.

я сейчас на свой сервер 100 строк оттуда скопирую и посмотрим, что скажет мой на эту таблицу.
если все то же, я расшарю.

К сообщению приложен файл. Размер - 18Kb
6 окт 15, 17:45    [18242901]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
У меня получается, что индекс игнорируется , т.к. он просматривает только записи с vale = 1 (это видно в плане), не всю таблицу.
6 окт 15, 17:49    [18242935]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
ну что, на моем он подхватывает индекс.
так что это у них не то.
какие-то настройки значит различаются, в данных нет ничего магического
6 окт 15, 17:51    [18242949]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
Хотя нет, он все страницы читает. Для индекса без фильтра количество чтений намного меньше.
6 окт 15, 17:51    [18242954]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o
ну что, на моем он подхватывает индекс.
так что это у них не то.
какие-то настройки значит различаются, в данных нет ничего магического


может версии разные? может в каком апдейте пофиксили чего... на картинках 10.50.2500.0 это 2008 r2 sp1 может в sp2/sp3 чего поправлено?
6 окт 15, 17:53    [18242973]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
вот полный скрипт создания.
на моем все то же самое кроме ФФ,
у нас же гады выставили на серверном уровне фф 80,
чтоб больше место заняло наше неизменяемое добро
USE [BASEDATI_BI]
GO

/****** Object:  Table [staging].[RSAR_fg_proc_T]    Script Date: 10/06/2015 16:51:43 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [staging].[RSAR_fg_proc_T](
	[NUM_PRAT] [int] NOT NULL,
	[CODICEPROC] [int] NOT NULL,
	[chiusura_dta] [int] NULL,
	[assegnazione_dta] [int] NULL,
	[oggi_dta] [int] NULL,
	[vale] [int] NOT NULL
) ON [PRIMARY]

GO


USE [BASEDATI_BI]
/****** Object:  Index [ix1_RSAR_fg_proc_T]    Script Date: 10/06/2015 16:51:43 ******/
CREATE NONCLUSTERED INDEX [ix1_RSAR_fg_proc_T] ON [staging].[RSAR_fg_proc_T] 
(
	[CODICEPROC] ASC
)
INCLUDE ( [assegnazione_dta],
[chiusura_dta],
[oggi_dta]) 
WHERE ([vale]=(1))
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 80) ON [PRIMARY]
GO


USE [BASEDATI_BI]
/****** Object:  Index [ix2_RSAR_fg_proc_T_vale_0]    Script Date: 10/06/2015 16:51:43 ******/
CREATE NONCLUSTERED INDEX [ix2_RSAR_fg_proc_T_vale_0] ON [staging].[RSAR_fg_proc_T] 
(
	[CODICEPROC] ASC
)
WHERE ([vale]=(0))
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 80) ON [PRIMARY]
GO
6 окт 15, 17:54    [18242976]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
ну да, у них версия старее.
значит завтра поставлю голый сервер и проверю, может это и версия,
спасибо за идею
6 окт 15, 17:56    [18242989]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
нет, товарищи, это не версия.
только что на греческом экземпляре, он вообще RTM,
все отработало с теми же 1000 строками.
у меня идеи закончились
6 окт 15, 18:04    [18243023]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
индекс в схеме dbo?
а табличка в схеме [staging]?
6 окт 15, 18:06    [18243033]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
Интересно, что для фильтра isnull индекс включается.
6 окт 15, 18:09    [18243052]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o
нет, товарищи, это не версия.
только что на греческом экземпляре, он вообще RTM,
все отработало с теми же 1000 строками.
у меня идеи закончились


а может так?

10.50.1600.1 (rtm) все работает
10.50.2500.0 (sp1) поломали
10.50.4000.0 (sp3) или 10.50.6000.34 (sp4) починили?
6 окт 15, 18:31    [18243176]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
Microsoft SQL Server 2012 - 11.0.5582.0 (X64)
Feb 27 2015 18:10:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

также не может использовать.
6 окт 15, 18:34    [18243190]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> нет, товарищи, это не версия.

а если уровень совместимости базы?
6 окт 15, 18:40    [18243212]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Владислав Колосов
Microsoft SQL Server 2012 - 11.0.5582.0 (X64)
Feb 27 2015 18:10:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

также не может использовать.


на такой же редакции норм.
6 окт 15, 18:43    [18243239]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
daw
> нет, товарищи, это не версия.
а если уровень совместимости базы?

уровень 100
6 окт 15, 18:54    [18243286]     Ответить | Цитировать Сообщить модератору
 Re: неперевариваемый filtered index  [new]
o-o
Guest
Владислав Колосов
Microsoft SQL Server 2012 - 11.0.5582.0 (X64)
Feb 27 2015 18:10:15
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

также не может использовать.

И тоже пишет, что не может план построить?
Выходит, верно предположение о версиях (включая сервис-паки), и через раз понимает?
Ну я завтра ему накачу sp1 и проверю.
Еще: не пашут x64, а мои x32 все да, RTM и SP3.
Но на ноуте есть x64, сейчас там проверю
6 окт 15, 19:04    [18243331]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить