إنشاء جدول:
إنشاء جدول [TestTable] (
[المعرف] [int] الهوية (1، 1) ليست فارغة،
[الاسم الأول] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[اسم العائلة] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL،
[الدولة] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ملاحظة] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) تشغيل [الابتدائي]
اذهب إلى
إدراج البيانات: (20000 عنصر، سيكون الاختبار باستخدام المزيد من البيانات أكثر وضوحًا)
قم بتعيين IDENTITY_INSERT TestTable على
الإعلان عن @i int
تعيين @ ط = 1
بينما @i<=20000
يبدأ
أدخل في قيم TestTable([id]، FirstName، LastName، Country،Note) (@i، 'FirstName_XXX'،'LastName_XXX'،'Country_XXX'،'Note_XXX')
اضبط @i=@i+1
نهاية
SET IDENTITY_INSERT TestTable OFF
---------------------------------------
حل الترحيل الأول: (استخدم Not In وحدد TOP الترحيل)
نموذج البيان:
اختر أفضل 10*
من TestTable
أين (المعرف ليس في
(اختر أفضل 20 معرفًا
من TestTable
الطلب حسب المعرف))
الطلب حسب الهوية
اختر حجم الصفحة العلوي*
من TestTable
أين (المعرف ليس في
(اختر حجم الصفحة العلوي * معرف رقم الصفحة
من الجدول
الطلب حسب المعرف))
الطلب حسب المعرف
---------------------------------------
نظام الترحيل الثاني: (استخدم المجموع مقدار المعرف أكبر من SELECT TOP الترحيل)
نموذج البيان:
اختر أفضل 10*
من TestTable
حيث (المعرف>
(حدد الحد الأقصى (المعرف)
من (اختر أفضل 20 معرفًا
من TestTable
الطلب حسب المعرف) AS T))
الطلب حسب الهوية
اختر حجم الصفحة العلوي*
من TestTable
حيث (المعرف>
(حدد الحد الأقصى (المعرف)
من (اختر حجم الصفحة العلوي * معرف رقم الصفحة
من الجدول
الطلب حسب المعرف) AS T))
الطلب حسب الهوية
---------------------------------------
نظام الترحيل الثالث: (باستخدام ترحيل الإجراء المخزن لمؤشر SQL )
إنشاء الإجراء XiaoZhengGe
@sqlstr nvarchar(4000)، - سلسلة الاستعلام
@currentpage int، --Page N
@pagesize int - عدد الأسطر في كل صفحة
مثل
تعيين nocount على
أعلن @P1 int، --P1 هو معرف المؤشر
@ عدد الصفوف int
exec sp_cursoropen @P1 الإخراج،@sqlstr،@scrollopt=1،@ccopt=1،@rowcount=@إخراج عدد الصفوف
حدد السقف ( 1.0*@rowcount/@pagesize ) كعدد إجمالي للصفحات--،@rowcount كإجمالي عدد الصفوف، و@currentpage كصفحة الحالية
قم بتعيين @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorClose @P1
عدم تعيين عدد
من الحلول الأخرى: إذا لم يكن هناك مفتاح أساسي، يمكنك استخدام جدول مؤقت، أو يمكنك استخدام الحل الثالث، ولكن الكفاءة ستكون منخفضة.
يوصى عند التحسين، أن تؤدي إضافة المفاتيح الأساسية والفهارس إلى تحسين كفاءة الاستعلام.
من خلال محلل استعلام SQL، عرض المقارنة: استنتاجي هو:
نظام الترحيل الثاني: (استخدام معرف أكبر من ماذا واختيار TOP للترحيل) الأكثر كفاءة، يحتاج إلى لصق عبارات SQL نظام الترحيل الأول: (استخدام Not In و SELECT TOP للترحيل) الثاني الأكثر كفاءة، يحتاج إلى لصق عبارات SQL لـ نظام الترحيل الثالث: (باستخدام نظام الترحيل الخاص بـ SQL) ترحيل الإجراء المخزن بالمؤشر) هو الأقل كفاءة، ولكنه الأكثر شيوعًا
في المواقف الفعلية، مطلوب تحليل محدد.