"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ## MySQL LIKE vs LOCATE: أيهما أسرع في مطابقة الأنماط؟

## MySQL LIKE vs LOCATE: أيهما أسرع في مطابقة الأنماط؟

تم النشر بتاريخ 2024-11-09
تصفح:866

##  MySQL LIKE vs LOCATE: Which is Faster for Pattern Matching?

MySQL LIKE vs LOCATE: أيهما أكثر كفاءة؟

عند إجراء استعلامات مطابقة الأنماط في MySQL، لديك خياران رئيسيان: LIKE المشغل ووظيفة LOCATE. أيهما يؤدي أداء أسرع؟

للإجابة على هذا السؤال، دعونا نقارن أداء هذين النهجين باستخدام معيار بسيط. يستخدم الاستعلام التالي عامل التشغيل LIKE للعثور على الصفوف التي يحتوي فيها العمود على نص محدد:

SELECT * FROM table WHERE column LIKE '%text%';

يستخدم الاستعلام التالي وظيفة LOCATE لإجراء نفس العملية:

SELECT * FROM table WHERE LOCATE('text',column)>0;

يُظهر تشغيل هذه الاستعلامات مقابل مجموعة بيانات كبيرة أن عامل التشغيل LIKE أسرع بشكل هامشي، ويرجع ذلك أساسًا إلى أنه يتجنب المقارنة الإضافية (> 0) التي يتطلبها LOCATE. فيما يلي نتائج الاختبار المعياري:

mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar'));
 --------------------------------------------- 
| BENCHMARK(100000000,LOCATE('foo','foobar')) |
 --------------------------------------------- 
|                                           0 |
 --------------------------------------------- 
1 row in set (3.24 sec)

mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0);
 ------------------------------------------------- 
| BENCHMARK(100000000,LOCATE('foo','foobar') > 0) |
 ------------------------------------------------- 
|                                               0 |
 ------------------------------------------------- 
1 row in set (4.63 sec)


mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%');
 -------------------------------------------- 
| BENCHMARK(100000000,'foobar' LIKE '%foo%') |
 -------------------------------------------- 
|                                          0 |
 -------------------------------------------- 
1 row in set (4.28 sec)

mysql> SELECT @@version;
 ---------------------- 
| @@version            |
 ---------------------- 
| 5.1.36-community-log |
 ---------------------- 
1 row in set (0.01 sec)
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3