技能 sql-optimization-patterns
📦

sql-optimization-patterns

安全

تحس��ن استعلامات SQL وأداء قاعدة البيانات

也可从以下获取: wshobson

استعلامات قاعدة البيانات البطيئة ت frustrate المستخدمين وتزيد من تكاليف البنية التحتية. توفر هذه المهارة أنماطًا منهجية لتحليل خطط الاستعلام، وتصميم فهارس فعالة، وتحويل SQL البطيء إلى عمليات عالية الأداء.

支持: Claude Codex Code(CC)
🥉 74 青铜
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“sql-optimization-patterns”。 استعلام مع عمليات المسح المتسلسل على جدول بـ 10 مليون صف

预期结果:

التحليل: يوضح EXPLAIN مسحًا متسلسلًا لأنه لا يوجد فهرس على العمود 'created_at' المستخدم في جملة WHERE. التوصية: CREATE INDEX idx_orders_created ON orders(created_at DESC). التحسين المتوقع: يجب أن ينخفض وقت الاستعلام من 2.3 ثانية إلى أقل من 50 مللي ثانية لنطاقات التاريخ الحديثة.

正在使用“sql-optimization-patterns”。 نمط N+1 يحمّل طلبات المستخدم بشكل فردي

预期结果:

المشكلة: تم تنفيذ 101 استعلام (1 للمستخدمين + 100 للطلبات). الحل: استبدل باستعلام JOIN واحد أو استخدم التحميل الدفعي باستخدام WHERE user_id in (...). النهج المعاد هيكلته يقلل من رحلات قاعدة البيانات بنسبة 99٪ ووقت التنفيذ الإجمالي من 5.2 ثانية إلى 120 مللي ثانية.

安全审计

安全
v1 • 2/25/2026

Static analysis flagged 103 potential issues that are all false positives. The 'external_commands' findings are markdown code fence backticks in documentation, not shell execution. The 'weak cryptographic algorithm' findings reference SQL examples, not actual crypto code. The 'filesystem' finding is a PostgreSQL COPY command syntax example in documentation. This skill contains only markdown documentation with SQL optimization patterns and examples - no executable code or security risks.

2
已扫描文件
543
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
50
社区
100
安全
91
规范符合性

你能构建什么

تحسين منصة التجارة الإلكترونية

يعاني فريق التطوير من بطء استعلامات البحث عن المنتجات وسجل الطلبات خلال أوقات الذروة. تساعد المهارة في تحليل سجلات الاستعلام البطيئة، وتحديد الفهارس المفقودة في الأعمدة المفلترة بشكل متكرر، وإعادة هيكلة أنماط N+1 في تحميل الطلبات لتقليل أوقات استجابة API من ثوانٍ إلى ملي ثانية.

أداء لوحة التحليلات

يحتاج مهندس البيانات إلى تسريع استعلامات التجميع للوحات المعلومات في الوقت الفعلي التي تعرض مقاييس المبيعات. توجه المهارة تنفيذ طرق العرض المادية للحسابات المكلفة، والفهارس الشاملة للمسح المستند إلى الفهرس فقط، وأنماط GROUP BY فعالة لتحقيق معدلات تحديث لوحة المعلومات أقل من ثانية.

تحديث التطبيقات القديمة

يرث مطور أول تطبيقًا مع عشرات الاستعلامات البطيئة التي تسبب أخطاء انتهاء المهلة. توفر المهنة منهجًا منهجيًا: التقاط الاستعلامات البطيئة باستخدام pg_stat_statements، وتحليل خطط التنفيذ، وإعطاء الأولوية لتحسينات التأثير العالي، وتنفيذ الفهرسة الصحيحة للقضاء على 90٪ من مشاكل الأداء دون إعادة كتابة التطبيق.

试试这些提示

التحليل الأساسي للاستعلام
لدي استعلام SQL بطيء يستغرق أكثر من 5 ثوانٍ للتشغيل. إليك الاستعلام وهيكل الجدول: [الصق الاستعلام والمخطط]. هل يمكنك تحليل ما قد يسبب البطء واقتراح فهارس محددة لإنشائها؟
تفسير خطة EXPLAIN
قمت بتشغيل EXPLAIN ANALYZE على استعلامي وحصلت على هذا المخرج: [الصق مخرج EXPLAIN]. يرجى شرح ما تعنيه كل عملية، وتحديد اختناقات ا��أداء، والتوصية بتحسينات محددة.
تصميم استراتيجية الفهرسة
لدي جدول بأعمدة [قائمة الأ��مدة] وأكثر استعلاماتي شيوعًا هي: [قائمة الاستعلامات]. ما استراتيجية الفهرسة التي يجب أن أستخدمها؟ ضع في اعتبارك الفهارس المركبة والفهارس الجزئية والفهارس الشاملة حيث كان مناسبًا.
إعادة هيكلة استعلام N+1
ينفذ تطبيقي مئات الاستعلامات المماثلة في حلقة: [وصف النمط أو إظهار الكود]. هذا يسبب مشاكل في الأداء. ساعدني في إعادة هيكلة هذا باستخدام JOINs أو التحميل الدفعي أو تقنيات أخرى لتقليل عدد رحلات قاعدة البيانات.

最佳实践

  • استخدم دائمًا EXPLAIN ANALYZE لفهم تنفيذ الاستعلام الفعلي قبل التحسين
  • أنشئ فهارس على الأعمدة المستخدمة في جمل WHERE و JOIN و ORDER BY - ولكن تجنب الإفراط في الفهرسة لأن كل فهرس يبطئ عمليات الكتابة
  • اجلب فقط الأعمدة المطلوبة بدلاً من SELECT *، وقم بتصفية البيانات في أسرع وقت ممكن في الاستعلام

避免

  • استخدام الدو��ل على الأعمدة المفهرسة في جمل WHERE دون فهارس وظيفية مقابلة
  • الترحيل بقيم OFFSET كبيرة على الجداول الكبيرة بدلاً من النهج المستندة إلى المؤشر
  • تنفيذ الاستعلامات في حلقات التطبيق (نمط N+1) بدلاً من التحميل الدفعي أو JOINs

常见问题

كيف أحدد الاستعلامات التي يجب تحسينها أولاً؟
ركز على الاستعلامات ذات التأثير الإجمالي العالي: الاستعلامات المتكررة مع بطء معتقد تهم في كثير من الأحيان أكثر من الاستعلامات النادرة جدًا البطيئة. استخدم pg_stat_statements (PostgreSQL) أو سجلات الاستعلام البطيئة للعثور على الاستعلامات حسب إجمالي وقت التنفيذ وعدد الاستدعاءات.
هل سيؤدي إضافة المزيد من الفهارس دائمًا إلى تحسين الأداء؟
لا. الفهارس تسريع القراءة لكنها تبطئ عمليات INSERT و UPDATE و DELETE. يستهلك كل فهرس مساحة تخزين ويجب الحفاظ عليه. ركز على الفهارس التي تدعم استعلاماتك الأكثر حرجة وتجنب فهرسة الأعمدة منخفضة الانتقائية.
ما الفرق بين EXPLAIN و EXPLAIN ANALYZE؟
يوضح EXPLAIN خطة الاستعلام المقدرة بناءً على إحصائيات الجدول. ينفذ EXPLAIN ANALYZE الاستعلام فعليًا ويبلغ عن التوقيت الفعلي وأعداد الصفوف، مما يكشف الفجوات بين التقديرات والواقع التي تشير في كثير من الأحيان إلى إحصائيات قديمة أو مشاكل في استنشاق المعلمات.
متى يجب أن أستخدم فهرسًا مركبًا مقابل فهارس منفصلة؟
استخدم الفهارس المركبة عندما تقوم الاستعلامات بتصفية أعمدة متعددة معًا. رتب الأعمدة حسب الانتقائية (الأكثر انتقائية أولاً) وفكر في أنماط الاستعلام الخاصة بك. الفهرس المركب على (A, B) يدعم الاستعلامات التي تصفى على A وحده أو A+B معًا، ولكن ليس B وحده.
كيف أعرف ما إذا كان فهرسي قيد الاستخدام؟
استعلم عن pg_stat_user_indexes (PostgreSQL) للتحقق من عدادات idx_scan. إذا أظهر الفهرس عمليات مسح صفرية أو قليلة جدًا على الرغم من الاستعلامات ذات الصلة، فقد لا يكون قابلاً للاستخدام أو اختار المحسن خطة مختلفة. استخدم EXPLAIN للتحقق من استخدام الفهرس للاستعلامات المحددة.
ما هو الترحيل المستند إلى المؤشر ومتى يجب أن أستخدمه؟
يستخدم الترحيل المستند إلى المؤشر جملة WHERE مع آخر قيمة تمت رؤيتها (على سبيل المثال، WHERE created_at < last_cursor) بدلاً من OFFSET. يحافظ على أداء متسقر بغض النظر عن عمق الصفحة، على عكس OFFSET الذي يجب أن يمسح ويتجاهل جميع الصفوف السابقة.