تذكر أن فهرس قاعدة بيانات MySQL غير صالح بسبب ترميز مجموعة الأحرف

نظرة عامة

اليوم ، ملاحظات التطوير هي نفس 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 لاحقًا ، يمكن للأصدقاء المهتمين متابعة ~

حول القضايا بروتوكول المصادقة اتصال Oracle12c --ORA-28040

ممارسة بيثون اليومية لتربية الأرانب

مشاركة حل إعادة بناء عرض أوراكل القياسي ، الجدير بالتجميع

اكتشف تلقائيًا أقراص linux بناءً على zabbix4.2 ومراقبة قرص Linux IO

mysql بطريق الخطأ حذف ملف frm وملف ibd لجدول قاعدة البيانات؟ حاول أن تتعافى بهذه الطريقة

الخلية التجربة - حذف عن طريق الخطأ الملف .frm جدول قاعدة بيانات، ولكن وجود الملف .ibd كيفية استعادة؟

تنفيذ مراقبة حالة اتصال TCP لخادم Linux استنادًا إلى zabbix4.2

ممارسة بايثون اليومية تسعة تسعة جدول الضرب

مشاركة الدخن ترتفع WEB المصدر المفتوح أداة رسومية - وهو مفتاح تحسين دعم SQL

تمارس بايثون يوميا كيفية النسخ

من تجربة الخلية لمشاهدة تفويض performance_schema / information_schema

شارك Xiaomi يحلق أداة التحسين بنقرة واحدة - SQL التحسين وأداة إعادة كتابة الأتمتة