نظرة عامة
اليوم ، ملاحظات التطوير هي نفس sql وحجم البيانات هو نفسه ، لكن الأمر يستغرق أكثر من 140 ثانية في بيئة القياس الشاملة وأكثر من ثانية واحدة فقط في بيئة التطوير. ما هو السبب؟ دعونا نلقي نظرة معا ~
SQL مشكلة
SELECT ty.IS_FIXATION AS isFixation، CASE when ty.INSPECTION_RULES not Null and ty.IS_INSPECTION = 'Y' THEN 'Unchecked' ELSE NULL END AS InspectionStatus، من t_ams_asset_card t الانضمام الأيسر T_AMS_ASSET_TYPE ty.TYPE_NO = t.ASSET_TYPE AND t.FINANCE_CODE = ty.ORG_CODE التسجيل الأيسر hr_ployee e on t.USE_MAN = e.EMPLOYEE_CODE حيث t.ASSET_MODULE = 'OWN' و t.IS_DELETE = 'N'مقارنة:
فكرة: سبب هذا الموقف بشكل عام عدم وجود فهرس أو فشل الفهرس.
1. قارن خطط التنفيذ
اشرح + sql هنا لعرض خطة التنفيذ
2. تحقق من المؤشر البيئي على كلا الجانبين
يمكن أن نجد أن هناك فهرس على جانبي البيئة ، فيجب أن يكون الفشل قد فشل ..
3. الاستخدام الإلزامي للفهارس
جرب مؤشر القوة (HR_EMPLOYEE_U1) هنا ووجد أن الاستخدام الجبري للفهرس غير صالح أيضًا. لماذا الفهرس غير صالح هنا؟
4. تحقق من محرك تخزين الجدول ، ونوع بيانات حقل الجدول ، ومجموعة أحرف حقل الجدول
الفشل العام للفهرس هو التحويل الضمني الناتج عن محرك تخزين الجدول أو نوع بيانات الحقل أو مجموعة الأحرف.
عرض أعمدة كاملة من hr_ployee ؛ إظهار أعمدة كاملة من t_ams_asset_card ؛5. اختبار بعد تعديل ترميز مجموعة الأحرف
تحديد c.TABLE_SCHEMA "قاعدة بيانات" ، ج. طاولة TABLE_NAME ، ج. حقل COLUMN_NAME ، ج. COLUMN_DEFAULT "القيمة الافتراضية" ، ج. IS_NULLABLE "هل هو فارغ" ، c.DATA_TYPE "نوع الحقل" ، c.character_set_name "مجموعة الأحرف الأصلية" ، c.collation_name "الترتيب الأصلي" ، CONCAT ( 'تغيير الجدول'، TABLE_SCHEMA ، "." ، اسم الطاولة، "تعديل العمود" ، اسم العمود، '' ، COLUMN_TYPE ، 'CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'، قضية عندما c.is_nullable = "لا" ثم "NOT NULL" آخر "NULL" النهاية، قضية عندما ج. COLUMN_DEFAULT = '' ثم 'إفتراضي' '' '' عندما يكون COLUMN_DEFAULT فارغًا بعد ذلك "DEFAULT NULL" ELSE concat ("DEFAULT"، "" "، c.COLUMN_DEFAULT،" ") النهاية، 'تعليق'، "" "، ج. COLUMN_COMMENT ، "" "، '؛' ) "إصلاح SQL" من عند information_schema.`COLUMNS` ج أين table_name = 'hr_ployee' و table_schema = 'lcp_db' AND CHARACTER_SET_NAME = 'utf8' ،6. تحقق من خطة التنفيذ مرة أخرى
بعد التعديل ، تم العثور على أنه تم استخدام الفهرس ، وتنفيذ SQL أيضًا في غضون ثانية واحدة لتلبية الطلب.
الأصدقاء الذين يجدونها مفيدة يمكن أن يساعدوا في إعادة توجيهها! سيتم مشاركة المزيد من devops ومحتوى DBA لاحقًا ، يمكن للأصدقاء المهتمين متابعة ~