powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как упростить и ускорить данный запрос
2 сообщений из 2, страница 1 из 1
Как упростить и ускорить данный запрос
    #39650776
Jumabaev1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хранимая процедура для вычисление валовой прибыли из таблицы покупки и продажи


USE [ESEP]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.esep_ReportSalesMorjaByDate', 'P' ) IS NOT NULL
DROP PROCEDURE dbo.esep_ReportSalesMorjaByDate;
GO

CREATE PROCEDURE [dbo].[esep_ReportSalesMorjaByDate]
@DateStart datetime,
@DateEnd datetime

AS
BEGIN
SET NOCOUNT ON;

SELECT ps.DocumentNum, MAX(ps.DateTime) as 'DateTime', SUM(ps.Quantity * ps.Price) as 'SaleSum',
SUM(ps.Quantity * (SELECT TOP 1 pc.Price
FROM tbl_ProductsComing pc
WHERE pc.ProductsID = ps.ProductsID and pc.DateTime <= ps.DateTime
ORDER BY pc.DateTime DESC)) as 'ComeSum',
c.Name as 'CustomerName', u.Name as 'UserName'
FROM tbl_ProductsSelling ps INNER JOIN tbl_Customers c ON c.ID = ps.CustomersID
INNER JOIN tbl_Users u ON u.ID = ps.UsersID
WHERE ps.DateTime >= @DateStart and ps.DateTime <= @DateEnd
GROUP BY ps.DocumentNum, c.Name, u.Name

END
GO
...
Рейтинг: 0 / 0
Как упростить и ускорить данный запрос
    #39651428
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jumabaev1,
А все необходимые индексы вы уже создали?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT ps.documentnum, 
       Max(ps.datetime)                                AS 'DateTime', 
       Sum(ps.quantity * ps.price)                     AS 'SaleSum', 
       Sum(ps.quantity * (SELECT TOP 1 pc.price 
                          FROM   tbl_productscoming pc 
                          WHERE  pc.productsid = ps.productsid 
                                 AND pc.datetime <= ps.datetime 
                          ORDER  BY pc.datetime DESC)) AS 'ComeSum', 
       c.NAME                                          AS 'CustomerName', 
       u.NAME                                          AS 'UserName' 
FROM   tbl_productsselling ps 
       INNER JOIN tbl_customers c 
               ON c.id = ps.customersid 
       INNER JOIN tbl_users u 
               ON u.id = ps.usersid 
WHERE  ps.datetime >= @DateStart 
       AND ps.datetime <= @DateEnd 
GROUP  BY ps.documentnum, 
          c.NAME, 
          u.NAME 
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как упростить и ускорить данный запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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