عند التعامل مع تحديدات MySQL كبيرة الحجم مع ملايين الصفوف، يمكن أن تنشأ مشكلات تتعلق بقيود الذاكرة أثناء استرداد البيانات. تستكشف هذه المقالة حلاً لهذا التحدي من خلال استخدام ميزة LIMIT لاسترداد البيانات في أجزاء يمكن التحكم فيها.
لاسترداد مجموعات البيانات الكبيرة بشكل متكرر، يمكن استخدام ميزة LIMIT. من خلال تحديد صف البداية والحد الأقصى لعدد الصفوف التي سيتم استردادها، يمكننا تقسيم عملية الاختيار إلى مجموعات فرعية أصغر. على سبيل المثال، تنفيذ الاستعلام التالي:
SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000
سيؤدي إلى جلب أول 1000 صف. لاسترداد مجموعات لاحقة مكونة من 1000 صف، يمكننا إصدار استعلامات مماثلة بقيم LIMIT معدلة، مثل:
SELECT * FROM MyTable ORDER BY whatever LIMIT 1000,1000 -- rows 1,001 - 2,000 SELECT * FROM MyTable ORDER BY whatever LIMIT 2000,1000 -- rows 2,001 - 3,000
ومع ذلك، لا يضمن هذا الأسلوب ترتيبًا ثابتًا للصفوف بسبب التغييرات المحتملة في الجدول أثناء عملية الاسترداد. لمعالجة هذه المشكلة، يمكننا أولاً إنشاء جدول مؤقت وملؤه بالنتائج المطلوبة:
CREATE TEMPORARY TABLE MyChunkedResult AS ( SELECT * FROM MyTable ORDER BY whatever );
يضمن هذا بقاء ترتيب الصفوف كما هو أثناء استعادتها في أجزاء:
SELECT * FROM MyChunkedResult LIMIT 0, 1000; SELECT * FROM MyChunkedResult LIMIT 1000,1000; SELECT * FROM MyChunkedResult LIMIT 2000,1000; .. and so on.
لتحديد صف البداية المناسب لكل قطعة والتحقق من نهاية النتائج، يمكن تنفيذ المنطق المخصص. من المستحسن استخدام أحجام قطع أكبر بكثير من 1000 سجل لتحسين الأداء.
عند الانتهاء من استرداد البيانات، من المستحسن إسقاط الجدول المؤقت لإدارة الموارد:
DROP TEMPORARY TABLE MyChunkedResult;
يؤدي اعتماد أسلوب الاسترجاع المجزأ هذا إلى تحسين الأداء بشكل كبير ويسمح بالاستخراج الناجح لمجموعات بيانات MySQL الكبيرة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3