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

Откуда:
Сообщений: 810
есть таблица, в таблице всего лишь 4 строки, вот скрипт таблицы...


CREATE TABLE [dbo].[BLANK1] (
	[num_id] [bigint] IDENTITY (1, 1) NOT NULL ,
	[reg_id] [int] NOT NULL ,
	[dept_id] [int] NOT NULL ,
	[company_id] [int] NOT NULL ,
	[cust_id] [int] NOT NULL ,
	[good_id] [int] NOT NULL ,
	[proforma] [nvarchar] (50) COLLATE Turkish_CI_AS NOT NULL ,
	[approved] [bit] NOT NULL ,
	[approve_date] [datetime] NULL ,
	[approved_by] [int] NULL ,
	[createdate] [datetime] NOT NULL 
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[BLANK1] WITH NOCHECK ADD 
	CONSTRAINT [PK_BLANK1] PRIMARY KEY  CLUSTERED 
	(
		[num_id]
	)  ON [PRIMARY] 
GO

ALTER TABLE [dbo].[BLANK1] ADD 
	CONSTRAINT [DF_BLANK1_approved] DEFAULT (0) FOR [approved],
	CONSTRAINT [DF_BLANK1_approved_by] DEFAULT (0) FOR [approved_by]
GO

 CREATE  INDEX [NonClustered_on(join tables)] ON [dbo].[BLANK1]([reg_id], [dept_id], [company_id], [cust_id], [good_id]) ON [PRIMARY]
GO

ALTER TABLE [dbo].[BLANK1] ADD 
	CONSTRAINT [FK_BLANK1_COMPANIES] FOREIGN KEY 
	(
		[company_id]
	) REFERENCES [dbo].[COMPANIES] (
		[co_id]
	),
	CONSTRAINT [FK_BLANK1_DEPTS] FOREIGN KEY 
	(
		[dept_id]
	) REFERENCES [dbo].[DEPTS] (
		[d_id]
	) ON DELETE CASCADE ,
	CONSTRAINT [FK_BLANK1_GOODS] FOREIGN KEY 
	(
		[good_id]
	) REFERENCES [dbo].[GOODS] (
		[g_id]
	),
	CONSTRAINT [FK_BLANK1_USERS] FOREIGN KEY 
	(
		[approved_by]
	) REFERENCES [dbo].[USERS] (
		[user_id]
	) ON DELETE CASCADE 
GO


видно что таблица имеет внешние ключи к 4-м таблицам, на все вшешние ключи имеются некластерные индексы... при выполнении запроса

select num_id from BLANK1 where num_id = 73

вот план этого запроса, но вот почему цена запроса Select 100%)??? связано ли это как то со внешними ключами?

К сообщению приложен файл. Размер - 0Kb
25 апр 05, 13:31    [1494526]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
itON
Member

Откуда: Москва
Сообщений: 391
А сколько должно быть по вашему?
25 апр 05, 13:37    [1494556]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
есть почти такая же таблица BLANK2 которая имеет всего один внешний ключ к таблице BLANK1, в таблице BLANK2 есть один кластерный индекс, и 10 строк данных.. пр выполнении запроса SELECT Cost:0% ... вот мне и интересно почему так...
25 апр 05, 13:39    [1494572]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
вот план этого запроса, но вот почему цена запроса Select 100%)???


Ваш план состоит из двух операторов. Один из них имеет стоимость 100%, второй 0%. В итоге (1 + 2) 100%. Что Вас не устраивает?
25 апр 05, 13:40    [1494575]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
мне интересно почему такой же запрос на таблицу BLANK2
select b2_id from BLANK2 where b2 = 14
цена запроса 0%... может я чего-то не понимаю?!, и здесь два оператора, я просто хочу знать по какой причине в первом случае цена 100 а во втором нет.. это объяснимо или нет?
25 апр 05, 13:44    [1494592]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
itON
Member

Откуда: Москва
Сообщений: 391
У вас скорее всего индексов нет на той таблице
25 апр 05, 13:46    [1494603]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
индекс есть на таблице BLANK2 кластерный и не кластерный на внешний ключ ... наверное все-таки здесь имеют значения внешние ключи хотя как незнаю.. спасибо большое ..
25 апр 05, 13:49    [1494619]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
itON
Member

Откуда: Москва
Сообщений: 391
select b2_id from BLANK2 where b2 = 14
А по полю b2 у вас индекс построен?
25 апр 05, 13:55    [1494654]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
да, кластерный... точнее не b2_id а просто id, и еще там же некластерный индекс для поля num_id , внешний ключ на таблицу BLANk1
25 апр 05, 13:57    [1494670]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
select b2_id from BLANK2 where b2 = 14


Эээ... Запрос оень сильно отличается от первого. приводите уж и план выполнения второго.
25 апр 05, 13:59    [1494679]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
select * from BLANK2 where id = 178


К сообщению приложен файл. Размер - 0Kb
25 апр 05, 14:03    [1494695]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
25 апр 05, 14:05    [1494709]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Есть подозрение, что Вы Estimated планы приводите. посмотрите реальные (Ctrl+K).
25 апр 05, 14:18    [1494793]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
вы правы, на запрос blank2 был показан Estimated план.. при ctrl+K план тот же что и с BLANK1, Cost Select = 100%.. надо было обращать внимание на Hint плана... простите..
25 апр 05, 14:23    [1494816]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
но ведь все равно раз Estimated дает 0 в обоих операторах, почему тогда реальный план дает 100% на селект?.. нормально ли это? в каком случае получаеться такой эффект..?
25 апр 05, 14:24    [1494826]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
itON
Member

Откуда: Москва
Сообщений: 391
Estimated - это предварительный план запуска, т.е. априори
25 апр 05, 14:33    [1494874]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
если это предварительный а то есть вычисляемый, тогда получается что он не всегда точен?!.. а как вычисляеться estimated? используя статистику на эти индексы или же как то по другому?
25 апр 05, 14:38    [1494896]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
если это предварительный а то есть вычисляемый, тогда получается что он не всегда точен?!..


Невсегда. Более того, эти планы могут сильно отличаться.
25 апр 05, 14:51    [1494956]     Ответить | Цитировать Сообщить модератору
 Re: нужен ответ на Execution Plan  [new]
unicode
Member

Откуда:
Сообщений: 810
большое спасибо всем..
25 апр 05, 14:52    [1494966]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить