صورة المؤلف
على مستوى المبتدئين ، نحن نركز فقط على كتابة وتشغيل استعلامات SQL. نحن لا نهتم بمدى الوقت الذي يستغرقه التنفيذ أو ما إذا كان يمكنه التعامل مع ملايين السجلات. ولكن على المستوى المتوسط ، يتوقع الأشخاص تحسين استعلامك وأن يستغرق تنفيذه الحد الأدنى من الوقت.
من الضروري كتابة استعلام محسن في التطبيقات الكبيرة التي تحتوي على ملايين السجلات ، مثل منصات التجارة الإلكترونية أو الأنظمة المصرفية. لنفترض أنك تمتلك شركة تجارة إلكترونية بها أكثر من مليون منتج ، ويريد أحد العملاء البحث عن منتج. ماذا لو استغرق الاستعلام الذي كتبته في الخلفية أكثر من دقيقة لجلب هذا المنتج من قاعدة البيانات؟ هل تعتقد أن العملاء يشترون المنتجات من موقع الويب الخاص بك؟
عليك أن تفهم أهمية تحسين استعلام SQL. في هذا البرنامج التعليمي ، سأعرض لك بعض النصائح والحيل لتحسين استعلامات SQL الخاصة بك وجعلها تنفذ بشكل أسرع. الشرط الأساسي هو أنه يجب أن يكون لديك معرفة أساسية بـ SQL.
للتحقق مما إذا كان عنصر معين موجودًا في الجدول ، استخدم EXIST()
الكلمة الأساسية بدلاً من COUNT()
سيتم تشغيل الاستعلام بطريقة أفضل.
باستخدام COUNT()
، يحتاج الاستعلام إلى حساب جميع تكرارات هذا العنصر المحدد والتي قد تكون غير فعالة عندما تكون قاعدة البيانات واسعة النطاق. على الجانب الآخر، EXIST()
سيتحقق فقط من التواجد الأول لهذا العنصر ثم يتوقف عند العثور على التكرار الأول. وهذا يوفر الكثير من الوقت.
أيضًا ، أنت مهتم فقط بمعرفة ما إذا كان عنصر معين موجودًا أم لا. أنت غير مهتم بالعثور على عدد التكرارات. لهذا السبب أيضًا EXIST()
هو أفضل.
SELECT EXISTS( SELECT * FROM table WHERE myColumn = 'val' );
سيعود الاستعلام أعلاه 1 إذا كان صف جدول واحد على الأقل يحتوي على إدخال حيث يتم تسمية العمود myColumn
له قيمة تساوي فال. خلاف ذلك ، سوف يعود 0.
يبلغ قطر كلاً من char
و varchar
تُستخدم أنواع البيانات لتخزين سلاسل الأحرف في الجدول. لكن varchar
أكثر كفاءة في استخدام الذاكرة من char
.
يمكن لنوع البيانات char فقط تخزين سلسلة الأحرف ذات الطول المحدد المحدد. إذا كان طول السلسلة أقل من الطول الثابت ، فسيتم حشو الفراغات لجعل طولها مساويًا للطول المحدد. سيؤدي ذلك إلى إضاعة الذاكرة في الحشو دون داع. على سبيل المثال،CHAR(100)
سيستغرق 100 بايت من الذاكرة حتى لو تم تخزين حرف واحد.
من ناحية أخرى ، يقوم varchar datatype بتخزين سلسلة الأحرف ذات الطول المتغير الذي يكون طوله أقل من الحد الأقصى للطول المحدد. لا يملأ الفراغات ويأخذ الذاكرة مساوية لطول السلسلة الفعلي فقط. على سبيل المثال، VARCHAR(100)
لا يستغرق سوى بايت واحد من الذاكرة عند تخزين حرف واحد.
CREATE TABLE myTable ( id INT PRIMARY KEY, charCol CHAR(10), varcharCol VARCHAR(10)
);
في المثال أعلاه ، جدول myTable
تم إنشاؤه من عمودين ، charCol
و varcharCol
وجود أنواع بيانات char و varchar على التوالي. charCol
سيستغرق دائمًا 10 بايت من الذاكرة. في المقابل، varcharCol
تأخذ ذاكرة مساوية للحجم الفعلي لسلسلة الأحرف المخزنة فيها.
يجب أن نتجنب استخدام الاستعلامات الفرعية داخل جملة WHERE لتحسين استعلام SQL. نظرًا لأن الاستعلامات الفرعية يمكن أن تكون باهظة الثمن ويصعب تنفيذها عند إرجاع عدد كبير من الصفوف.
بدلاً من استخدام الاستعلام الفرعي ، يمكنك الحصول على نفس النتيجة باستخدام عملية ربط أو كتابة استعلام فرعي مرتبط. الاستعلام الفرعي المرتبط هو استعلام فرعي يعتمد فيه الاستعلام الداخلي على الاستعلام الخارجي. وهي فعالة للغاية مقارنة بالاستعلام الفرعي غير المرتبط.
يوجد أدناه مثال لفهم الفرق بين الاثنين.
# Using a subquery
SELECT * FROM orders WHERE customer_id IN ( SELECT id FROM customers WHERE country = 'INDIA' ); # Using a join operation
SELECT orders.* FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.country = 'INDIA';
في المثال الأول ، يجمع الاستعلام الفرعي أولاً جميع معرفات العملاء التي تنتمي إلى الهند ، ثم سيحصل الاستعلام الخارجي على جميع أوامر معرفات العملاء المحددة. وفي المثال الثاني ، حققنا نفس النتيجة من خلال الانضمام إلى customers
و orders
الجداول ثم تحديد الطلبات التي ينتمي إليها العملاء فقط من الهند.
بهذه الطريقة ، يمكننا تحسين الاستعلام عن طريق تجنب استخدام الاستعلامات الفرعية داخل جملة WHERE وتسهيل قراءتها وفهمها.
تطبيق JOIN
التشغيل من جدول أكبر إلى جدول أصغر هو أسلوب شائع لتحسين SQL. لأن الانضمام من جدول أكبر إلى جدول أصغر سيجعل تنفيذ الاستعلام أسرع. إذا طبقنا أ JOIN
التشغيل من جدول أصغر إلى جدول أكبر ، يتعين على محرك SQL الخاص بنا البحث في جدول أكبر عن الصفوف المطابقة. وهذا يتطلب الكثير من الموارد ويستغرق وقتًا طويلاً. ولكن من ناحية أخرى ، إذا كان JOIN
يتم تطبيقه من جدول أكبر إلى جدول أصغر ، ثم يتعين على محرك SQL البحث في جدول أصغر عن الصفوف المطابقة.
هنا مثال لتفهمك بشكل أفضل.
# Order table is larger than the Customer table # Join from a larger table to a smaller table
SELECT * FROM Order JOIN Customer ON Customer.id = Order.id # Join from a smaller table to a larger table
SELECT * FROM Customer JOIN Order ON Customer.id = Order.id
وخلافا لل LIKE
بند، regexp_like
يستخدم أيضًا للبحث عن الأنماط. ال LIKE
الشرط هو عامل أساسي لمطابقة الأنماط يمكنه تنفيذ العمليات الأساسية فقط مثل _ or %، والتي تُستخدم لمطابقة حرف واحد أو أي عدد من الأحرف على التوالي. ال LIKE
يجب أن تفحص الجملة قاعدة البيانات الكاملة للعثور على النمط المعين ، والذي يكون بطيئًا بالنسبة للجداول الكبيرة.
من ناحية أخرى، regexp_like
هي تقنية أكثر كفاءة ومحسّنة وفعالية للبحث عن الأنماط. يستخدم تعبيرات منتظمة أكثر تعقيدًا للعثور على أنماط معينة في سلسلة الأحرف. هذه التعبيرات النمطية أكثر تحديدًا من مطابقة أحرف البدل البسيطة لأنها تسمح لك بالبحث عن النمط الدقيق الذي نعثر عليه. نتيجة لهذا ، يتم تقليل كمية البيانات التي يجب البحث عنها ، ويتم تنفيذ الاستعلام بشكل أسرع.
يرجى ملاحظة أن regexp_like
قد لا تكون موجودة في جميع أنظمة إدارة قواعد البيانات. قد يختلف تركيبه ووظائفه في الأنظمة الأخرى.
هنا مثال لتفهمك بشكل أفضل.
# Query using the LIKE clause
SELECT * FROM mytable WHERE ( name LIKE 'A%' OR name LIKE 'B%' ); # Query using regexp_like clause
SELECT * FROM mytable WHERE regexp_like(name, '^[AB].*');
تُستخدم الاستعلامات أعلاه للعثور على العناصر التي يبدأ اسمها بالحرف A أو B. في المثال الأول ، LIKE
يستخدم للبحث في جميع الأسماء التي تبدأ بحرف A أو B. A%
يعني أن الحرف الأول هو A ؛ بعد ذلك ، يمكن أن يتواجد أي عدد من الأحرف. في المثال الثاني ، regexp_like
يستخدم. داخل ^[AB]
, ^
يمثل أن الرمز سيتطابق في بداية السلسلة ، [AB]
يمثل أن حرف البداية يمكن أن يكون A أو B ، و .*
يمثل جميع الشخصيات بعد ذلك.
باستخدام regexp_like
، يمكن لقاعدة البيانات تصفية الصفوف التي لا تتطابق مع النمط بسرعة ، وتحسين الأداء وتقليل استخدام الموارد.
في هذه المقالة ، ناقشنا طرقًا ونصائح مختلفة لتحسين استعلام SQL. تمنحك هذه المقالة فهمًا واضحًا لكيفية كتابة استعلامات SQL فعالة وأهمية تحسينها. هناك العديد من الطرق لتحسين الاستعلامات ، مثل تفضيل استخدام قيم الأعداد الصحيحة بدلاً من الأحرف أو استخدام Union All بدلاً من Union عندما لا يحتوي جدولك على نسخ مكررة ، إلخ.
آريان جارج هو بي تك. طالب هندسة كهربائية ، حاليا في السنة الأخيرة من دراسته الجامعية. يكمن اهتمامه في مجال تطوير الويب والتعلم الآلي. لقد سعى وراء هذا الاهتمام وأنا حريص على العمل أكثر في هذه الاتجاهات.
- محتوى مدعوم من تحسين محركات البحث وتوزيع العلاقات العامة. تضخيم اليوم.
- بلاتوبلوكشين. Web3 Metaverse Intelligence. تضخيم المعرفة. الوصول هنا.
- المصدر https://www.kdnuggets.com/2023/03/sql-query-optimization-techniques.html?utm_source=rss&utm_medium=rss&utm_campaign=sql-query-optimization-techniques
- 1
- 10
- 100
- 7
- 9
- a
- من نحن
- فوق
- تحقق
- بعد
- الكل
- دائما
- كمية
- و
- التطبيقات
- تطبيقي
- التقديم
- البند
- تجنب
- الخلفية
- البنوك والمصارف
- النظم المصرفية
- الأساسية
- لان
- مبتدئ
- البداية
- أفضل
- ما بين
- فارغة
- يشترى
- يستطيع الحصول على
- حرف
- الأحرف
- التحقق
- واضح
- يجمع
- عمود
- الأعمدة
- مشترك
- حول الشركة
- مقارنة
- إكمال
- مجمع
- يحتوي
- تباين
- البلد
- خلق
- حاليا
- زبون
- العملاء
- البيانات
- قاعدة البيانات
- تعريف
- يعتمد
- التطوير التجاري
- فرق
- صعبة
- ناقش
- لا
- لا
- التكرارات
- التجارة الإلكترونية
- منصات التجارة الإلكترونية
- أسهل
- فعال
- الهندسة الكهربائية
- عناصر
- محرك
- الهندسة
- دخول
- إلخ
- حتى
- مثال
- تنفيذ
- ينفذ
- توقع
- ذو تكلفة باهظة
- التعبيرات
- واسع
- أسرع
- حقل
- تصفية
- نهائي
- العثور على
- ويرى
- الاسم الأول
- ثابت
- تركز
- تبدأ من
- وظيفة
- دولار فقط واحصل على خصم XNUMX% على جميع
- يعطي
- يد
- مقبض
- وجود
- كيفية
- كيفية
- HTTPS
- صيغة الامر
- أهمية
- تحسين
- in
- في أخرى
- الهند
- غير فعال
- بدلًا من ذلك
- مصلحة
- يستفد
- متوسط
- IT
- الانضمام
- انضمام
- KD nuggets
- القفل
- المعرفة
- كبير
- أكبر
- تعلم
- الطول
- مستوى
- لينكدين:
- الكثير
- آلة
- آلة التعلم
- جعل
- القيام ب
- إدارة
- كثير
- مباراة
- مطابقة
- أقصى
- يعني
- مكبر الصوت : يدعم، مع دعم ميكروفون مدمج لمنع الضوضاء
- طرق
- مليون
- ملايين
- الحد الأدنى
- دقيقة
- الأكثر من ذلك
- أكثر فعالية
- الاسم
- عين
- أسماء
- إحتياجات
- عدد
- ONE
- عملية
- عمليات
- عامل
- التحسين
- الأمثل
- الأمثل
- تحسين
- طلب
- الطلبات
- أخرى
- وإلا
- الخاصة
- وسادة
- خاص
- نمط
- أنماط
- مجتمع
- نفذ
- أداء
- منصات التداول
- أفلاطون
- الذكاء افلاطون البيانات
- أفلاطون داتا
- قوي
- يقدم
- ابتدائي
- المنتج
- المنتجات
- بسرعة
- عرض
- تسجيل
- عقار مخفض
- تقليص
- منتظم
- يمثل
- مورد
- موارد كثيفة
- على التوالي
- نتيجة
- عائد أعلى
- صف
- يجري
- تشغيل
- نفسه
- تفحص
- بحث
- البحث
- الثاني
- مختار
- اختيار
- طقم
- إظهار
- الاشارات
- عزباء
- المقاس
- بطيء
- الأصغر
- بعض
- المساحات
- محدد
- محدد
- SQL
- بداية
- يبدأ
- قلة النوم
- متجر
- تخزين
- فروعنا
- طالب
- رمز
- بناء الجملة
- أنظمة
- جدول
- أخذ
- يأخذ
- التكنولوجيا
- تقنيات
- •
- الوقت
- استهلاك الوقت
- نصائح
- نصائح وحيل
- إلى
- البرنامج التعليمي
- أنواع
- فهم
- فهم
- الاتحاد
- بلا داعى
- الأستعمال
- تستخدم
- فال
- قيمنا
- القيم
- مختلف
- نفاية
- طرق
- الويب
- تطوير شبكة الويب
- الموقع الإلكتروني
- ابحث عن
- سواء
- التي
- سوف
- للعمل
- اكتب
- جاري الكتابة
- عام
- حل متجر العقارات الشامل الخاص بك في جورجيا
- زفيرنت