23-10-21, 03:36 PM
بسم الله الرحمن الرحيم .
أولا : لتفادي هذا البطيء عليك بتنظيم استعلاماتك بحيث تحدد الذي تريده من الاستعلام من الاعمدة و تستغني عن Select * From Table و تستعيض عنها بالعمدة التي تريد فقط .
ثانيا : ليس عليك بجلي كل الرو أي السجلات و تقوم باستعلام تحديد آخر 100 سجل أو السجلات التي تلي تاريخ معين مثلا مع إضافة رصيد سابق عن 100 سجل فهذا يخفف عبئ عن البرنامج في حال كان عدد السجلات كبير .
مثال عن استعلام قبل تاريخ : 2020-09-10
سكربت إنشاء الجدول :
و طبعا قبل كل ذلك استبدال قواعد البيانات أكسيس و ما الى ذلك بقاعد بيانات مثل سيكول سيرفير أو ماي اس كيو ال سيرفير .
و طبعا كما قال الأخ : Taha Okla يحبذ استبدال الهارد العادي بهارد SSD و الله الموفق .
أولا : لتفادي هذا البطيء عليك بتنظيم استعلاماتك بحيث تحدد الذي تريده من الاستعلام من الاعمدة و تستغني عن Select * From Table و تستعيض عنها بالعمدة التي تريد فقط .
ثانيا : ليس عليك بجلي كل الرو أي السجلات و تقوم باستعلام تحديد آخر 100 سجل أو السجلات التي تلي تاريخ معين مثلا مع إضافة رصيد سابق عن 100 سجل فهذا يخفف عبئ عن البرنامج في حال كان عدد السجلات كبير .
مثال عن استعلام قبل تاريخ : 2020-09-10
PHP كود :
use QtnDB1;
IF EXISTS(SELECT * FROM #temp)
drop table #temp
CREATE TABLE #temp
(
[DebitAccount] [decimal](18, 2) NOT NULL,
[CreditAccount] [decimal](18, 2) NOT NULL,
[BalanceAccount] [decimal](18, 2) NOT NULL,
[AccountID] [int] NOT NULL,
[AccountName] [nvarchar](50) NOT NULL,
[AccountDate] [date] NOT NULL,
[AutoNumbering] INT IDENTITY(1,1) PRIMARY KEY,
) ON [PRIMARY]
delete from #temp
insert into #temp (DebitAccount,CreditAccount,BalanceAccount,AccountID,AccountName,AccountDate)
(Select Sum(DebitAccount)As DebitAccount,Sum(CreditAccount)As CreditAccount,Sum(DebitAccount)-Sum(CreditAccount)As BalanceAccount,AccountID,N'رصيد سابق','2020-09-09' From DayBook Where AccountDate < '2020-09-10' And AccountID=1811
group by AccountID,AccountName)
DECLARE @i int =1,@b int=1
select DebitAccount,CreditAccount,BalanceAccount,AccountID,AccountName,AccountDate,AutoNumbering from #temp
UNION ALL
Select Sum(DebitAccount)As DebitAccount,Sum(CreditAccount)As CreditAccount,Sum(ISNULL(DebitAccount,0))-Sum(ISNULL(CreditAccount,0))As BalanceAccount,AccountID,AccountName,AccountDate,max(AutoNumbering) From DayBook Where AccountDate Between '2020-09-10' And '2021-04-15' And AccountID=1811
group by AccountID,AccountName,AccountDate;
سكربت إنشاء الجدول :
PHP كود :
USE [QtnDB1]
GO
/****** Object: Table [dbo].[daybook] Script Date: 10/23/2021 2:32:50 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[daybook](
[DebitAccount] [decimal](18, 2) NOT NULL,
[CreditAccount] [decimal](18, 2) NOT NULL,
[BalanceAccount] [decimal](18, 2) NOT NULL,
[AccountID] [int] NOT NULL,
[AccountName] [nvarchar](50) NOT NULL,
[AccountStatement] [nvarchar](50) NULL,
[AccountMoneyName] [int] NOT NULL,
[AccountDate] [date] NOT NULL,
[AccountNum] [int] NOT NULL,
[Accounting] [int] NOT NULL,
[AutoNumbering] [int] IDENTITY(1,1) NOT NULL,
[IsDeleteed] [bit] NULL,
CONSTRAINT [PK_daybook] PRIMARY KEY CLUSTERED
(
[AutoNumbering] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
و طبعا قبل كل ذلك استبدال قواعد البيانات أكسيس و ما الى ذلك بقاعد بيانات مثل سيكول سيرفير أو ماي اس كيو ال سيرفير .
و طبعا كما قال الأخ : Taha Okla يحبذ استبدال الهارد العادي بهارد SSD و الله الموفق .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر
