خوارزمية ترحيل أعلى كفاءة. الرمز كما يلي:
<٪
'عدد السجلات لكل صفحة
باهتة
pagesize = 30
"اقرأ إجمالي عدد السجلات ، وإجمالي عدد الصفحات ، وملاحظات Piaoyi
Dim TotalRecords ، مجموع الصفحات
SQLSTR = حدد العد (معرف) كـ Recordsum from Table1
تعيين rs = conn.execute (sqlstr ، 0،1)
TotalRecords = RS (Recordsum)
إذا كانت int (TotalRecords/pagesize) = TotalRecords/pagesize ثم
مجموع الصفحات = TotalRecords/Pagesize
آخر
TotalPages = int (TotalRecords/Pagesize) +1
إنهاء إذا
Rs.close
تعيين روبية = لا شيء
رقم الصفحة الحالي ، ملاحظة piaoyi
صفحة خافتة
الصفحة = طلب (صفحة)
إذا isnumeric (صفحة) = خطأ ثم
استجابة. write <script language = javaScript> ALERT ('خطأ في المعلمة!') ؛
استجابة. window.close () ؛ </script>
استجابة
إنهاء إذا
إذا كانت الصفحة = أو الصفحة <1 ثم الصفحة = 1
إذا
الصفحة = int (صفحة)
إذا الصفحة = 1 ثم
SQL = حدد TOP & Pagesize & ID ، العنوان ، الوقت من Table1 Order حسب الوقت DESC
آخر
SQL = حدد TOP & PAGESIZE & ID ، العنوان ، الوقت من TABLE1 حيث الوقت <(حدد MIN (الوقت) من (تحديد TOP & PAGESIZE*(صفحة 1)
إنهاء إذا
تعيين rs = server.createBject (adodb.recordset)
Rs.Open SQL ، Conn ، 1،1
افعل بينما لا rs.eof
استجابة. اكتب كل معلومات سجل: & rs (id) & <br>
Rs.Movenext
حلقة
Rs.close
تعيين روبية = لا شيء
تم حذف رمز دوران الصفحة ...
٪>
هذه خوارزمية ترحيل فعالة للغاية. عندما تصل كمية البيانات الموجودة في جدول البيانات إلى الملايين ، يكون وقت استجابة خوارزمية الترحيل أعلاه قصيرة جدًا ، وعادةً ما يكون ذلك ضمن عشرات المللي ثانية. المبدأ بسيط للغاية.
في أمثلة خوارزميات الترحيل أعلاه ، يستخدم Flymorn وقت حقل الوقت للطلب ، لأنه في معظم الأنظمة التي تعرضت لها ، نحتاج إلى تحديث المستخدم مؤخرًا (بما في ذلك السجلات المضافة حديثًا والتعديلات الجديدة) من السجل القديم (السجل القديم) يتم عرضه في المقدمة. لهذا السبب يستخدم Flymorn حقل الوقت.
وهذا ينطوي على مسألة الفهرسة المجمعة. بشكل افتراضي ، نستخدم المعرف المرقم التلقائي كمفتاح أساسي ونستخدمه كعمود فهرس إجمالي. لقد ذكرت السؤال الذي يجب عرض المحتوى الذي تم تحديثه مؤخرًا في المخطط السابق ، لذلك يتعين علينا استخدام حقل الوقت لفرزه. لذلك ، من أجل تحقيق كفاءة أعلى من الترحيل ، يمكننا تصميم حقل الوقت هذا كعمود فهرس إجمالي عند تصميم قاعدة البيانات.
بعد مثل هذا التصميم ، سيتم تحسين كفاءة الترحيل بشكل عام إلى حد كبير.
ومع ذلك ، هناك مشكلة بسيطة أخرى في استخدام حقل الوقت هذا كعمود فهرس إجمالي. لأنه عندما يتم ترتيب جدول البيانات ، يتم فرزه جسديًا وفقًا لعمود الفهرس الإجمالي. يجب أن تستند قاعدة البيانات إلى هذا العمود المجمعة ، كما يذكر المعلومات التي تم تحريرها حديثًا إلى نهاية الجدول ، والتي تستغرق وقتًا معينًا. وهذا يعني ، عندما نستخدم حقل الوقت كعمود فهرس إجمالي ، نحتاج إلى قضاء المزيد من الوقت عند تحديث البيانات.
ومع ذلك ، في المقارنة الشاملة ، يعتقد Piaoyi أن مفتاح الخوارزمية الفعالة للتربية في TOP هو تجنب المسح الكامل للمطالبة ومحاولة الحصول على الحقول المطلوبة فقط. هي وقت الاستجابة لبيان SQL المرتبة هو الأسرع. بعد هذه المعالجة ، بالنسبة لقاعدة بيانات SQL Server ، حتى لو كان هناك عشرات الملايين من البيانات ، فلا داعي للقلق من أن خوارزمية الترحيل ستفقد ردها.
ما سبق هو خوارزمية مكتوبة بلغة ASP كمثال ، وبالطبع يمكن أيضًا تعديلها في لغات أخرى مثل ASP.NET و PHP. من أجل استخدام رمز الترحيل هذا بشكل أفضل ، يمكنك أيضًا إعادة كتابة الخوارزمية أعلاه في إجراء مخزن.
أخيرًا ، اترك سؤالًا صغيرًا: عند تحديد Top Paging ، عندما يتم تحويل الصفحة إلى النهاية ، ماذا سيحدث إذا لم يكن عمود حقل الفرز هو عمود الفهرس الإجمالي؟