اختيار التحديد وقت التحميل في MySQL
سؤال
لدي حزم طاولة واحدة
تحتوي الحزم على معرف 2 الحقول والإجمالي
كلاهما طول bigint طول 20 والمفاتيح الأولية
المعرف الوحيد هو زيادة تلقائية
في كل سجل إجمالي = ID
حصلت على 10000 سجل دعونا نقول المعرف = 1 - 10000 والإجمالي = 1 - 10000
حصلت على 2 استفسارات متطابقة تقريبا 1 نتائج وقت تحميل طويل جدا ويكمل المرء على الفور تقريبا.
وقت تحميل طويل جدا:
set @ = 0؛
تحديد *
من الحزم مثل P1
حيث p1.total في (حدد p2.total
من الحزم مثل P2 حيث ((@ @ @ = @ i + 1))
وقت التحميل قصير جدا:
set @ = 0؛
تحديد *
من الحزم مثل P1
حيث p1.id في (حدد p2.id
من الحزم مثل P2 حيث ((@ @ @ = @ i + 1))
يحدث هذا أثناء قيم المعرف والإجمالي متطابقة.
المحلول
كلاهما طول bigint طول 20 والمفاتيح الأولية
لا يمكنك الحصول على مفتاحين أساسيين في جدول واحد.
يبدو أنه ليس لديك فهرس packets.total
قم بإنشائه ومعرفة ما إذا كان يساعد:
CREATE INDEX ix_packets_total ON packets (total)
لا تنتمي إلى StackOverflow