powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с оптимизацией IS NOT NULL
20 сообщений из 70, страница 3 из 3
Проблема с оптимизацией IS NOT NULL
    #39849146
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,

авторВ любом случае этот запрос у вас не выполнится, потому как план с nested loop будет, я дополнил это уже в статье.
это потому что планы с NL никогда не выполняются?
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849158
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKNitro_Junkie,

авторВ любом случае этот запрос у вас не выполнится, потому как план с nested loop будет, я дополнил это уже в статье.
это потому что планы с NL никогда не выполняются?
Если там 10к записей то нет. Я не дождался во всяком случае выполнения вот такого запроса:
Код: sql
1.
2.
3.
4.
5.
SELECT shipmentDetail.id, b.quantity
	FROM shipmentDetail 
	JOIN shipment ON shipmentDetail.shipment = shipment.id
	outer apply (select quantity from balance(shipment.date) where stock = shipment.stock AND product = shipmentDetail.product) b
	WHERE shipmentDetail.id%1000 = 0
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849164
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shipmentDetail.id%1000

извращение ещё то, вы как будто специально ставите сервер в позу своими запросами
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849165
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneshipmentDetail.id%1000

извращение ещё то, вы как будто специально ставите сервер в позу своими запросами

Тут любое условие где >10к записей подойдет.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849170
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,

и на какую оптимизация Вы рассчитываете в этом условии?

Код: sql
1.
WHERE shipmentDetail.id%1000 = 0
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849174
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkieпотому как план с nested loop будетСерьезно?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
use tempdb;
go

create table dbo.t1 (id int primary key, dt datetime, a int);
create table dbo.t2 (id int primary key, t1_id int, dt datetime, b int);

update statistics dbo.t1 with rowcount = 100000;
update statistics dbo.t2 with rowcount = 10000000;
go

create function dbo.fn1
(
 @dt datetime
)
returns table
as
return
 select
  id, dt, t1_id, b
 from
  dbo.t2
 where
  dt = @dt;
go

set statistics profile on;

select
 a.id, a.a, b.b
from
 dbo.t1 a outer apply
 (select b from dbo.fn1(a.dt) where t1_id = a.id) b;

set statistics profile off;
go

drop function dbo.fn1;
drop table dbo.t1, dbo.t2;
go


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select   a.id, a.a, b.b  from   dbo.t1 a outer apply   (select b from dbo.fn1(a.dt) where t1_id = a.id) b
  |--Parallelism(Gather Streams)
       |--Hash Match(Left Outer Join, HASH:([a].[dt], [a].[id])=([tempdb].[dbo].[t2].[dt], [tempdb].[dbo].[t2].[t1_id]), RESIDUAL:([tempdb].[dbo].[t2].[dt]=[tempdb].[dbo].[t1].[dt] as [a].[dt] AND [tempdb].[dbo].[t2].[t1_id]=[tempdb].[dbo].[t1].[id] as [a].[id]))
            |--Bitmap(HASH:([a].[dt], [a].[id]), DEFINE:([Bitmap1004]))
            |    |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([a].[dt], [a].[id]))
            |         |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[t1].[PK__t1__3213E83F86CDC1E6] AS [a]))
            |--Compute Scalar(DEFINE:([Expr1003]=[tempdb].[dbo].[t2].[b]))
                 |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([tempdb].[dbo].[t2].[dt], [tempdb].[dbo].[t2].[t1_id]))
                      |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[t2].[PK__t2__3213E83F436C000F]), WHERE:(PROBE([Bitmap1004],[tempdb].[dbo].[t2].[dt],[tempdb].[dbo].[t2].[t1_id])))


ЗЫ: Гарантированный NL будет, если в в apply или в функции будет select top(...) ...
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849175
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовNitro_Junkie,

и на какую оптимизация Вы рассчитываете в этом условии?

Код: sql
1.
WHERE shipmentDetail.id%1000 = 0



На то что hash join будет. Как если грубо говоря сделать:

Код: sql
1.
2.
3.
4.
5.
SELECT shipmentDetail.id, b.quantity
	FROM shipmentDetail 
	JOIN shipment ON shipmentDetail.shipment = shipment.id
	LEFT JOIN balance(shipment.date) ON stock = shipment.stock AND product = shipmentDetail.product b
	WHERE shipmentDetail.id%1000 = 0



А если быть точным, вот так, как делает lsFusion:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT shipmentDetail.id, b.quantity
	FROM shipmentDetail 
	JOIN shipment ON shipmentDetail.shipment = shipment.id
	JOIN (SELECT stock, product, dates.date, SUM(quantity) AS quantity
		FROM
			(SELECT receipt.stock, product, receipt.date, quantity
			FROM receiptDetail 
				JOIN receipt ON receiptDetail.receipt = receipt.id
			UNION ALL 
			SELECT shipment.stock, product, shipment.date, -quantity
				FROM shipmentDetail 
				JOIN shipment ON shipmentDetail.shipment = shipment.id
			) details
		JOIN 
			(SELECT shipment.date
				FROM shipmentDetail 
				JOIN shipment ON shipmentDetail.shipment = shipment.id
				WHERE shipmentDetail.id %1000 = 0
				GROUP BY shipment.date
			) dates ON details.date < dates.date
		GROUP BY stock, product, dates.date
	) b ON b.stock = shipment.stock AND b.product = shipmentDetail.product AND b.date = shipment.date
	WHERE shipmentDetail.id %1000 = 0



Это все есть в статье, к которой тут все норовят придраться.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849179
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmNitro_Junkieпотому как план с nested loop будетСерьезно?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
use tempdb;
go

create table dbo.t1 (id int primary key, dt datetime, a int);
create table dbo.t2 (id int primary key, t1_id int, dt datetime, b int);

update statistics dbo.t1 with rowcount = 100000;
update statistics dbo.t2 with rowcount = 10000000;
go

create function dbo.fn1
(
 @dt datetime
)
returns table
as
return
 select
  id, dt, t1_id, b
 from
  dbo.t2
 where
  dt = @dt;
go

set statistics profile on;

select
 a.id, a.a, b.b
from
 dbo.t1 a outer apply
 (select b from dbo.fn1(a.dt) where t1_id = a.id) b;

set statistics profile off;
go

drop function dbo.fn1;
drop table dbo.t1, dbo.t2;
go


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select   a.id, a.a, b.b  from   dbo.t1 a outer apply   (select b from dbo.fn1(a.dt) where t1_id = a.id) b
  |--Parallelism(Gather Streams)
       |--Hash Match(Left Outer Join, HASH:([a].[dt], [a].[id])=([tempdb].[dbo].[t2].[dt], [tempdb].[dbo].[t2].[t1_id]), RESIDUAL:([tempdb].[dbo].[t2].[dt]=[tempdb].[dbo].[t1].[dt] as [a].[dt] AND [tempdb].[dbo].[t2].[t1_id]=[tempdb].[dbo].[t1].[id] as [a].[id]))
            |--Bitmap(HASH:([a].[dt], [a].[id]), DEFINE:([Bitmap1004]))
            |    |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([a].[dt], [a].[id]))
            |         |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[t1].[PK__t1__3213E83F86CDC1E6] AS [a]))
            |--Compute Scalar(DEFINE:([Expr1003]=[tempdb].[dbo].[t2].[b]))
                 |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([tempdb].[dbo].[t2].[dt], [tempdb].[dbo].[t2].[t1_id]))
                      |--Clustered Index Scan(OBJECT:([tempdb].[dbo].[t2].[PK__t2__3213E83F436C000F]), WHERE:(PROBE([Bitmap1004],[tempdb].[dbo].[t2].[dt],[tempdb].[dbo].[t2].[t1_id])))


ЗЫ: Гарантированный NL будет, если в в apply или в функции будет select top(...) ...

Гарантированный NL в данном случае будет (а не вообще). Когда у вас есть параметр, для которого таблицы и предиката = нет (есть только на >, < типа остатка / задолженности на дату как в примере).
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849189
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie,

авторкак делает lsFusion

Хм, это очень плохой запрос, поднять его производительность можно только методом грубой силы (оборудованием). В нем есть и сортировки, и просмотры, предполагаю, что и параллельный план выполнения не может быть для него построен.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849192
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieГарантированный NL в данном случае будет (а не вообще). Когда у вас есть параметр, для которого таблицы и предиката = нетКогда нет предиката эквивалентности как раз и будет гарантиролванный NL, что для join, что для apply.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849205
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовNitro_Junkie,

авторкак делает lsFusion

Хм, это очень плохой запрос, поднять его производительность можно только методом грубой силы (оборудованием). В нем есть и сортировки, и просмотры, предполагаю, что и параллельный план выполнения не может быть для него построен.

Ну он точно лучше чем базовый (который вешает все намертво). И хорошо параллелится (с чего вдруг он не должен этого делать).
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849208
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmNitro_JunkieГарантированный NL в данном случае будет (а не вообще). Когда у вас есть параметр, для которого таблицы и предиката = нетКогда нет предиката эквивалентности как раз и будет гарантиролванный NL, что для join, что для apply.

Когда есть предикат эквивалентности то и UDF и APPLY не нужны. Можно построить обычный VIEW, просто с join'ить его а Join Predicate Push Down все сам сделает. А смысл пункта в статье именно в таких параметрах.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849236
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieКогда есть предикат эквивалентности то и UDF и APPLY не нужны.А когда нету, то нужны?

Вы просто не знаете как решать подобные задачи.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE FUNCTION balance (
    @date DATE,
    @stock ... = null,
    @product ... = null
)
RETURNS TABLE
AS
RETURN
SELECT stock, product, SUM(quantity) AS quantity
	FROM
		(SELECT receipt.stock, product, quantity
		FROM receiptDetail 
			JOIN receipt ON receiptDetail.receipt = receipt.id
			WHERE @stock is null and @product is null and receipt.date < @date
		UNION ALL 
		SELECT receipt.stock, product, quantity
		FROM receiptDetail 
			JOIN receipt ON receiptDetail.receipt = receipt.id
			WHERE @stock is not null and @product is not null and receipt.date < @date and stock = @stock and product = @product
		UNION ALL 
        SELECT shipment.stock, product, -quantity
			FROM shipmentDetail 
			JOIN shipment ON shipmentDetail.shipment = shipment.id
			WHERE @stock is null and @product is null and shipment.date < @date
		UNION ALL 
        SELECT shipment.stock, product, -quantity
			FROM shipmentDetail 
			JOIN shipment ON shipmentDetail.shipment = shipment.id
			WHERE @stock is not null and @product is not null and shipment.date < @date) details and stock = @stock and product = @product
	GROUP BY stock, product


Код: sql
1.
2.
3.
4.
5.
SELECT shipmentDetail.id, b.quantity
	FROM shipmentDetail 
	JOIN shipment ON shipmentDetail.shipment = shipment.id
	outer apply balance(shipment.date, shipment.stock, shipmentDetail.product) b
	WHERE shipmentDetail.id%1000 = 0
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849262
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmNitro_JunkieКогда есть предикат эквивалентности то и UDF и APPLY не нужны.А когда нету, то нужны?

Вы просто не знаете как решать подобные задачи.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE FUNCTION balance (
    @date DATE,
    @stock ... = null,
    @product ... = null
)
RETURNS TABLE
AS
RETURN
SELECT stock, product, SUM(quantity) AS quantity
	FROM
		(SELECT receipt.stock, product, quantity
		FROM receiptDetail 
			JOIN receipt ON receiptDetail.receipt = receipt.id
			WHERE @stock is null and @product is null and receipt.date < @date
		UNION ALL 
		SELECT receipt.stock, product, quantity
		FROM receiptDetail 
			JOIN receipt ON receiptDetail.receipt = receipt.id
			WHERE @stock is not null and @product is not null and receipt.date < @date and stock = @stock and product = @product
		UNION ALL 
        SELECT shipment.stock, product, -quantity
			FROM shipmentDetail 
			JOIN shipment ON shipmentDetail.shipment = shipment.id
			WHERE @stock is null and @product is null and shipment.date < @date
		UNION ALL 
        SELECT shipment.stock, product, -quantity
			FROM shipmentDetail 
			JOIN shipment ON shipmentDetail.shipment = shipment.id
			WHERE @stock is not null and @product is not null and shipment.date < @date) details and stock = @stock and product = @product
	GROUP BY stock, product


Код: sql
1.
2.
3.
4.
5.
SELECT shipmentDetail.id, b.quantity
	FROM shipmentDetail 
	JOIN shipment ON shipmentDetail.shipment = shipment.id
	outer apply balance(shipment.date, shipment.stock, shipmentDetail.product) b
	WHERE shipmentDetail.id%1000 = 0



Это вы к чему? Я имел ввиду что если бы запрос был на равенство date, то ни UDF ни APPLY не нужны были бы, можно было бы VIEW и JOIN обойтись.

Ну и в том что вы кинули тот же дурацкий план с nested loops:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
SELECT shipmentDetail.id, b.quantity   FROM shipmentDetail    JOIN shipment ON shipmentDetail.shipment = shipment.id   outer apply pbalance(shipment.date, shipment.stock, shipmentDetail.product) b   WHERE shipmentDetail.id%1000 = 0 OPTION (MAXDOP 1)
  |--Nested Loops(Left Outer Join, OUTER REFERENCES:([test].[dbo].[shipmentdetail].[product], [test].[dbo].[shipment].[date], [test].[dbo].[shipment].[stock]))
       |--Hash Match(Inner Join, HASH:([test].[dbo].[shipmentdetail].[shipment])=([test].[dbo].[shipment].[id]))
       |    |--Index Scan(OBJECT:([test].[dbo].[shipmentdetail].[shipmentdetail_p_s]),  WHERE:([test].[dbo].[shipmentdetail].[id]%(1000)=(0)))
       |    |--Clustered Index Scan(OBJECT:([test].[dbo].[shipment].[PK__shipment__3213E83F4B7B4D07]))
       |--Compute Scalar(DEFINE:([Expr1025]=CASE WHEN [Expr1033]=(0) THEN NULL ELSE [Expr1034] END))
            |--Stream Aggregate(DEFINE:([Expr1033]=COUNT_BIG([Union1024]), [Expr1034]=SUM([Union1024])))
                 |--Concatenation
                      |--Nested Loops(Inner Join, OUTER REFERENCES:([test].[dbo].[receiptdetail].[receipt]))
                      |    |--Nested Loops(Inner Join, OUTER REFERENCES:([test].[dbo].[receiptdetail].[id]))
                      |    |    |--Filter(WHERE:(STARTUP EXPR([test].[dbo].[shipment].[stock] IS NULL AND [test].[dbo].[shipmentdetail].[product] IS NULL)))
                      |    |    |    |--Index Seek(OBJECT:([test].[dbo].[receiptdetail].[receiptdetail_product_fk]), SEEK:([test].[dbo].[receiptdetail].[product]=[test].[dbo].[shipmentdetail].[product]) ORDERED FORWARD)
                      |    |    |--Clustered Index Seek(OBJECT:([test].[dbo].[receiptdetail].[PK__receiptd__3213E83FE8063B8C]), SEEK:([test].[dbo].[receiptdetail].[id]=[test].[dbo].[receiptdetail].[id]) LOOKUP ORDERED FORWARD)
                      |    |--Clustered Index Seek(OBJECT:([test].[dbo].[receipt].[PK__receipt__3213E83FE2F580DF]), SEEK:([test].[dbo].[receipt].[id]=[test].[dbo].[receiptdetail].[receipt]),  WHERE:([test].[dbo].[receipt].[stock]=[test].[dbo].[shipment].[stock] AND [test].[dbo].[receipt].[date]<[test].[dbo].[shipment].[date]) ORDERED FORWARD)
                      |--Nested Loops(Inner Join, OUTER REFERENCES:([test].[dbo].[receiptdetail].[receipt]))
                      |    |--Filter(WHERE:(STARTUP EXPR([test].[dbo].[shipment].[stock] IS NOT NULL AND [test].[dbo].[shipmentdetail].[product] IS NOT NULL)))
                      |    |    |--Index Spool(SEEK:([test].[dbo].[receiptdetail].[product]=[test].[dbo].[shipmentdetail].[product]))
                      |    |         |--Clustered Index Scan(OBJECT:([test].[dbo].[receiptdetail].[PK__receiptd__3213E83FE8063B8C]))
                      |    |--Clustered Index Seek(OBJECT:([test].[dbo].[receipt].[PK__receipt__3213E83FE2F580DF]), SEEK:([test].[dbo].[receipt].[id]=[test].[dbo].[receiptdetail].[receipt]),  WHERE:([test].[dbo].[receipt].[stock]=[test].[dbo].[shipment].[stock] AND [test].[dbo].[receipt].[date]<[test].[dbo].[shipment].[date]) ORDERED FORWARD)
                      |--Nested Loops(Inner Join, OUTER REFERENCES:([test].[dbo].[shipmentdetail].[shipment], [Expr1031]) WITH UNORDERED PREFETCH)
                      |    |--Filter(WHERE:(STARTUP EXPR([test].[dbo].[shipment].[stock] IS NULL AND [test].[dbo].[shipmentdetail].[product] IS NULL)))
                      |    |    |--Index Spool(SEEK:([test].[dbo].[shipmentdetail].[product]=[test].[dbo].[shipmentdetail].[product]))
                      |    |         |--Compute Scalar(DEFINE:([Expr1016]= -[test].[dbo].[shipmentdetail].[quantity]))
                      |    |              |--Clustered Index Scan(OBJECT:([test].[dbo].[shipmentdetail].[PK__shipment__3213E83F996CFFF4]))
                      |    |--Clustered Index Seek(OBJECT:([test].[dbo].[shipment].[PK__shipment__3213E83F4B7B4D07]), SEEK:([test].[dbo].[shipment].[id]=[test].[dbo].[shipmentdetail].[shipment]),  WHERE:([test].[dbo].[shipment].[stock]=[test].[dbo].[shipment].[stock] AND [test].[dbo].[shipment].[date]<[test].[dbo].[shipment].[date]) ORDERED FORWARD)
                      |--Nested Loops(Inner Join, OUTER REFERENCES:([test].[dbo].[shipmentdetail].[shipment], [Expr1032]) WITH UNORDERED PREFETCH)
                           |--Filter(WHERE:(STARTUP EXPR([test].[dbo].[shipment].[stock] IS NOT NULL AND [test].[dbo].[shipmentdetail].[product] IS NOT NULL)))
                           |    |--Index Spool(SEEK:([test].[dbo].[shipmentdetail].[product]=[test].[dbo].[shipmentdetail].[product]))
                           |         |--Compute Scalar(DEFINE:([Expr1021]= -[test].[dbo].[shipmentdetail].[quantity]))
                           |              |--Clustered Index Scan(OBJECT:([test].[dbo].[shipmentdetail].[PK__shipment__3213E83F996CFFF4]))
                           |--Clustered Index Seek(OBJECT:([test].[dbo].[shipment].[PK__shipment__3213E83F4B7B4D07]), SEEK:([test].[dbo].[shipment].[id]=[test].[dbo].[shipmentdetail].[shipment]),  WHERE:([test].[dbo].[shipment].[stock]=[test].[dbo].[shipment].[stock] AND [test].[dbo].[shipment].[date]<[test].[dbo].[shipment].[date]) ORDERED FORWARD)
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849335
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieНу и в том что вы кинули тот же дурацкий план с nested loopsПлан не дурацкий, а нормальный для вашей задачи. Ибо другого не будет.
Предложенные модификации позволят, при наличии соответствующих индексов, уменьшить объем перелопачиваемых данных.

Проблема у вас не в NL и плохости SQL, а в выбранной модели данных - отсутствует таблица текущего наличия. О чем уже не один раз писалось.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849363
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmотсутствует таблица текущего наличия
Что за таблица текущего наличия?
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849364
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_JunkieЧто за таблица текущего наличия?Таблица, где хранятся текущие остатки.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849367
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmNitro_JunkieЧто за таблица текущего наличия?Таблица, где хранятся текущие остатки.
Так мне нужны остатки на дату. А дата может быть и год назад. Чем мне текущие остатки то помогут?
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849372
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkieinvmпропущено...
Таблица, где хранятся текущие остатки.
Так мне нужны остатки на дату. А дата может быть и год назад. Чем мне текущие остатки то помогут?
Откройте для себя Регистр, а не изобретайте велосипед на треугольных колёсах.
...
Рейтинг: 0 / 0
Проблема с оптимизацией IS NOT NULL
    #39849380
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4d_monsterNitro_Junkieпропущено...

Так мне нужны остатки на дату. А дата может быть и год назад. Чем мне текущие остатки то помогут?
Откройте для себя Регистр, а не изобретайте велосипед на треугольных колёсах.

Это в Oracle или в MS SQL как называется? И даже если бы он был, чем мне он в этом запросе поможет? Ну не будет UNION ALL, но проблема то останется.
...
Рейтинг: 0 / 0
20 сообщений из 70, страница 3 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Проблема с оптимизацией IS NOT NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]