PDA

View Full Version : افزایش سرعت جستجو در سایت



neda_91
پنج شنبه 14 دی 1391, 11:47 صبح
با سلام خدمت همه دوستان
من یک button جستجو و چند dropdownlist در صفحه وب سایتم دارم که کاربر با انتخاب آیتم از dropdownlist و زدن دکمه می تونه اون کالای مورد نظرش را جستجو کنه که نام و مشخصات کالا در datalist که تعریف کردم دیده میشه.
من برای این کالاها یک دیتا بیس تشکیل دادم که جدول در این دیتابیس شامل بیش از 2000 ردیفه می خواستم وقتی کاربر رو دکمه جستجو کلیک می کنه با سرعت بیشتری عملیات جستجو را انجام بده.
بچطور می تونم این کار را انجام بدم؟
آیا باید کاری در دیتابیس بکنم که سریعتر جستجو کنه یا در behincode باید کدی بنویسم.
ممنون میشم راهنماییم کنید.
باسپاس

neda_91
شنبه 16 دی 1391, 11:02 صبح
کسی نیست جواب بده؟
:لبخندساده:

ali_mnkt
شنبه 16 دی 1391, 11:20 صبح
با سلام خدمت همه دوستان
من یک button جستجو و چند dropdownlist در صفحه وب سایتم دارم که کاربر با انتخاب آیتم از dropdownlist و زدن دکمه می تونه اون کالای مورد نظرش را جستجو کنه که نام و مشخصات کالا در datalist که تعریف کردم دیده میشه.
من برای این کالاها یک دیتا بیس تشکیل دادم که جدول در این دیتابیس شامل بیش از 2000 ردیفه می خواستم وقتی کاربر رو دکمه جستجو کلیک می کنه با سرعت بیشتری عملیات جستجو را انجام بده.
بچطور می تونم این کار را انجام بدم؟
آیا باید کاری در دیتابیس بکنم که سریعتر جستجو کنه یا در behincode باید کدی بنویسم.
ممنون میشم راهنماییم کنید.
باسپاس

از custom paging استفاده کن . یعنی به جای اینکه همه محصولات رو به سمت client بفرستی هر بار یک تعداد خاصی رو انتخاب کن و به client بفرست

neda_91
شنبه 16 دی 1391, 11:23 صبح
همین کار رو انجام دادم اما تو دیتا بیس باز هم اگه وقتی دنبال ردیفی می گرده باید 2000 ردیف را سرچ کنه ممکنه آن کالا توردیف 2000 باشه من یکجا در مورد index گذاری تو جداول خوندم آیا اینکار تاثیر داره؟

neda_91
یک شنبه 17 دی 1391, 16:31 عصر
کسی جواب سوال منو نمیدونه؟؟؟؟؟؟:ناراحت:

aminmorteza
یک شنبه 17 دی 1391, 19:42 عصر
سلام دوست عزیز شما میتونید برای اینکار از همون اندکس گذاری رویه اون فیلدی که میخواهید روش سرچ انجام بشه استفاده کنید ولی به نظر من 2000 رکورد که برای sql خیلی نیست که شما میگی سرعتش کمه پایگاه هایی هستند که ممکنه صد هزاز یا بیشتر رکورد داشته باشند ممکنه کدی که برای جستجو نوشتید بهینه نباشه یا اگه میتونید جستجو رو بر اساس کلید اصلی انجام بدهید که خودش به صورت اتوماتیک اندکس شده.

meisam3322
دوشنبه 18 دی 1391, 01:54 صبح
همانطور که دوست عزیزمون گفتند برای SQL Server تعداد 2000 رکورد چیزی محسوب نمیشه ، قدرت SQL Server خیلی بیشتر از این حرفاست. مسئله سرعت جستجوی سایت شما ، به نظر من برمیگرده به شیوه ای که اطلاعات رو از پایگاه داده دریافت میکنید و Query شما و خیلی مسائل دیگه که هیچ ربطی به قدرت یا سرعت SQL Server نداره

hashemi85sep
دوشنبه 18 دی 1391, 12:00 عصر
سلام دوست عزیز
کدی رو که برای جستجو نوشتی بزار ببینیم چیه اصلا
:چشمک:

neda_91
سه شنبه 26 دی 1391, 14:34 عصر
USE [behtop]
GO
/****** Object: StoredProcedure [dbo].[GetCustomersPageWise1] Script Date: 01/14/2013 15:04:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GetCustomersPageWise1]
@H_name nvarchar(50)
,@subset nvarchar(30)
,@PageIndex INT = 1
,@PageSize INT = 5
,@RecordCount INT OUTPUT
,@Region nvarchar(10)
,@district nvarchar(20)
,@shoppingcenter nvarchar(30)
,@labeltext nvarchar(30) OUTPUT
,@labeltext1 nvarchar(30) OUTPUT
,@Id int


AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY [House_p].[Date] desc
)AS RowNumber
,[House_p].[ID]
,[House_p].[Name]
,[House_p].[Image]
,[House_p].[Date]
,House_Info.Name as NameI
,[House_p].[Model]
,(House_info.Code+'-'+House_info.Tell) as tellF
,House_Info.BehCode as Behcode

INTO #Results
FROM [House_p]
JOIN [HOuse_info] ON [House_p].[BehCode] = [HOuse_info].[BehCode]
WHERE ([House_p].H_name=@H_name or [House_p].Classification=@subset) and ([HOuse_info].Region = @Region or @Region='همه') and ([House_Info].District=@District or @District='همه') and ([House_Info].ShoppingCenter=@shoppingcenter or @shoppingcenter='همه')
SELECT @RecordCount = COUNT(*)

FROM #Results

SELECT * FROM #Results
WHERE (RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1)


DROP TABLE #Results
SELECT @labelText=(SELECT Name FROM House_menu WHERE ID=@Id)
SELECT @labelText1=(SELECT Name FROM House_classification WHERE ID=@Id)
END


اینم کد من میخوام بدونم ایندکس گذاری روی سرعت ججستجو در Sql تاثیر داره؟

neda_91
سه شنبه 26 دی 1391, 14:34 عصر
USE [behtop]
GO
/****** Object: StoredProcedure [dbo].[GetCustomersPageWise1] Script Date: 01/14/2013 15:04:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GetCustomersPageWise1]
@H_name nvarchar(50)
,@subset nvarchar(30)
,@PageIndex INT = 1
,@PageSize INT = 5
,@RecordCount INT OUTPUT
,@Region nvarchar(10)
,@district nvarchar(20)
,@shoppingcenter nvarchar(30)
,@labeltext nvarchar(30) OUTPUT
,@labeltext1 nvarchar(30) OUTPUT
,@Id int


AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY [House_p].[Date] desc
)AS RowNumber
,[House_p].[ID]
,[House_p].[Name]
,[House_p].[Image]
,[House_p].[Date]
,House_Info.Name as NameI
,[House_p].[Model]
,(House_info.Code+'-'+House_info.Tell) as tellF
,House_Info.BehCode as Behcode

INTO #Results
FROM [House_p]
JOIN [HOuse_info] ON [House_p].[BehCode] = [HOuse_info].[BehCode]
WHERE ([House_p].H_name=@H_name or [House_p].Classification=@subset) and ([HOuse_info].Region = @Region or @Region='همه') and ([House_Info].District=@District or @District='همه') and ([House_Info].ShoppingCenter=@shoppingcenter or @shoppingcenter='همه')
SELECT @RecordCount = COUNT(*)

FROM #Results

SELECT * FROM #Results
WHERE (RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1)


DROP TABLE #Results
SELECT @labelText=(SELECT Name FROM House_menu WHERE ID=@Id)
SELECT @labelText1=(SELECT Name FROM House_classification WHERE ID=@Id)
END


اینم کد من میخوام بدونم ایندکس گذاری روی سرعت ججستجو در Sql تاثیر داره؟