امشب داشتم یک سلکتباکس با قابلیت سرچ رو مینوشتم که روی 3 تا ستون از یک جدول سرچ میزد
ستون های
چالشی که اینجا وجود داشت این بود که احتمال null بودن هر یک از این ستون ها وجود داشت و من توی خروجی نمیتونستم به قطعیت بگم که کدوم فیلد رو باید به عنوان label برای اون سلکتباکس نشون بدم
بعد از کمی سرچ زدن به یه تابع ساده و کاربردی توی MySQL رسیدم به نام COALESCE که خیلی ساده میتونید از بین n تا ستون؛ اولین ستونی که مقدار داره رو برگردونید
پس به این صورت ازش استفاده کردم
🎉 #Query #MySQL #Eloquent #Trick
✨ @PanicDev
ستون های
mobile, email, username و لازم بود که زمانی که ادمین داره سرچ میزنه؛ اولین ستونی که مقدار دهی شده بود به عنوان خروجی به صورت key, value برگشت داده بشهچالشی که اینجا وجود داشت این بود که احتمال null بودن هر یک از این ستون ها وجود داشت و من توی خروجی نمیتونستم به قطعیت بگم که کدوم فیلد رو باید به عنوان label برای اون سلکتباکس نشون بدم
بعد از کمی سرچ زدن به یه تابع ساده و کاربردی توی MySQL رسیدم به نام COALESCE که خیلی ساده میتونید از بین n تا ستون؛ اولین ستونی که مقدار داره رو برگردونید
پس به این صورت ازش استفاده کردم
user()قطعه کد بالا توی جدول
->selectRaw("COALESCE(mobile, email, username) as contact, id")
->where('mobile', 'like', "%$search%")
->orWhere('email', 'like', "%$search%")
->orWhere('username', 'like', "%$search%")
->limit(10)
->get()
->pluck('contact', 'id')
users روی سه ستون mobile و email و username سرچ میزنه و به ترتیب اولین ستونی که مقدار داشته باشه رو به عنوان contact بهمون برمیگردونه🎉 #Query #MySQL #Eloquent #Trick
✨ @PanicDev
GeeksforGeeks
MySQL COALESCE() Function
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
👍20❤4
بحث #دیتابیس #mysql
داشتم یک مطلبی میخوندم ، به یک دستوری اشاره کرد به اسم
مواردی که تونستم در بیارم زیاد نبود ،
ولی یه خلاصه و چند مورد از سناریو هایی که بهتر هست از این دستور استفاده کنیم رو بخوام بگم. این هستش که :
دستور ANALYZE TABLE یک دستور مفید برای بهروزرسانی آمار داخلی جدول که به بهینهسازی اجرای کوئریها کمک میکنه !
حالا مواردی که اشاره شده بود برای استفاده از این دستور این ها هستش :
✅زمانی که بعد از تغییرات بزرگ در دادهها، کوئریها کند شدند.
✅ زمانی که بعد از افزودن ایندکس، ایندکس استفاده نمیشود.
✅ زمانی که MySQL به جای استفاده از ایندکس، کل جدول را اسکن میکند.
✅ زمانی که بعد از بازیابی بکاپ، سرعت پایگاه داده کاهش یافته است.
✅ زمانی که جدول را با OPTIMIZE TABLE بهینه کردهاید.
✴️ نکات و best practices
🔹 تحلیل منظم: بهطور مرتب دستور ANALYZE TABLE را روی جداولی که تغییرات دادهای زیادی دارند اجرا کنید تا عملکرد کوئریها حفظ شود.
🔹 پایش عملکرد: این دستور را بهعنوان بخشی از نگهداری دورهای اجرا کنید، بهویژه پس از عملیات حجیم روی دادهها، تا آمارها بهروز بمانند.
🔹 توجه به سربار پردازشی: در نظر داشته باشید که ANALYZE TABLE ممکن است هنگام تجزیه و تحلیل، جداول را قفل کند که میتواند بر عملیات همزمان تأثیر بگذارد. بهتر است آن را در ساعات کمبار اجرا کنید تا اثرات منفی کاهش یابد.
🔹 سازگاری با موتورهای ذخیرهسازی: این دستور در موتورهای ذخیرهسازی مانند InnoDB و MyISAM پشتیبانی میشود اما ممکن است برای همه موتورهای ذخیرهسازی قابل استفاده نباشد. قبل از استفاده، از سازگاری آن اطمینان حاصل کنید.
🔹 اجرای خودکار: در برخی شرایط، MySQL ممکن است بهطور خودکار ANALYZE TABLE را اجرا کند، اما اجرای دستی آن تضمین میکند که آمارها بهروز باشند.
🔹 ارزیابی اثربخشی: برای بررسی تأثیر ANALYZE TABLE، برنامههای اجرای کوئری (Execution Plan) را قبل و بعد از آن مقایسه کنید. اگر موتور ذخیرهسازی شما از آن پشتیبانی نمیکند یا باعث افت عملکرد قابلتوجهی میشود، از اجرای آن خودداری کنید.
➕ نکته اضافه :
دستور
منابع که شاید برای مطالعه بیشتر دوست داشته باشید .
- لینک
- لینک
-لینک
#تجربه
خیلی دوست دارم کسانی که تجربه کار با این کامند داشتند ، تجربیاتشون رو با ما به اشتراک بگذارند . تاثیراتی که روی دیتابیس و کوئری ها بوده به چه صورتی بود و چقدر تائیر گذار داشته ، آیا این رو به صورت دوره ای schedule کردن ؟
ایا تجربه بدی هم ازش داشتن .
آیا اطلاعات بیشتری یا سناریو هایی بیشتری میشناسید که از این کامند استفاده کنیم ؟
با اشتراک گذاری اطلاعاتتون مارا خوشحال کنید .
سپاس
@panicdev
داشتم یک مطلبی میخوندم ، به یک دستوری اشاره کرد به اسم
ANALYZE کنجکاو شدم که بدونم به چه کاری میاد و باهاش میشه چیکار کرد . مواردی که تونستم در بیارم زیاد نبود ،
ولی یه خلاصه و چند مورد از سناریو هایی که بهتر هست از این دستور استفاده کنیم رو بخوام بگم. این هستش که :
دستور ANALYZE TABLE یک دستور مفید برای بهروزرسانی آمار داخلی جدول که به بهینهسازی اجرای کوئریها کمک میکنه !
حالا مواردی که اشاره شده بود برای استفاده از این دستور این ها هستش :
✅زمانی که بعد از تغییرات بزرگ در دادهها، کوئریها کند شدند.
✅ زمانی که بعد از افزودن ایندکس، ایندکس استفاده نمیشود.
✅ زمانی که MySQL به جای استفاده از ایندکس، کل جدول را اسکن میکند.
✅ زمانی که بعد از بازیابی بکاپ، سرعت پایگاه داده کاهش یافته است.
✅ زمانی که جدول را با OPTIMIZE TABLE بهینه کردهاید.
✴️ نکات و best practices
🔹 تحلیل منظم: بهطور مرتب دستور ANALYZE TABLE را روی جداولی که تغییرات دادهای زیادی دارند اجرا کنید تا عملکرد کوئریها حفظ شود.
🔹 پایش عملکرد: این دستور را بهعنوان بخشی از نگهداری دورهای اجرا کنید، بهویژه پس از عملیات حجیم روی دادهها، تا آمارها بهروز بمانند.
🔹 توجه به سربار پردازشی: در نظر داشته باشید که ANALYZE TABLE ممکن است هنگام تجزیه و تحلیل، جداول را قفل کند که میتواند بر عملیات همزمان تأثیر بگذارد. بهتر است آن را در ساعات کمبار اجرا کنید تا اثرات منفی کاهش یابد.
🔹 سازگاری با موتورهای ذخیرهسازی: این دستور در موتورهای ذخیرهسازی مانند InnoDB و MyISAM پشتیبانی میشود اما ممکن است برای همه موتورهای ذخیرهسازی قابل استفاده نباشد. قبل از استفاده، از سازگاری آن اطمینان حاصل کنید.
🔹 اجرای خودکار: در برخی شرایط، MySQL ممکن است بهطور خودکار ANALYZE TABLE را اجرا کند، اما اجرای دستی آن تضمین میکند که آمارها بهروز باشند.
🔹 ارزیابی اثربخشی: برای بررسی تأثیر ANALYZE TABLE، برنامههای اجرای کوئری (Execution Plan) را قبل و بعد از آن مقایسه کنید. اگر موتور ذخیرهسازی شما از آن پشتیبانی نمیکند یا باعث افت عملکرد قابلتوجهی میشود، از اجرای آن خودداری کنید.
➕ نکته اضافه :
دستور
EXPLAIN ANALYZE در MySQL هم داریم که اطلاعات دقیقی دربارهی برنامهی اجرای کوئری میده ، از جمله جزئیات مربوط به تصمیمات بهینهساز، روشهای دسترسی و هزینههای تخمینی. برخلاف EXPLAIN که فقط طرح اجرای کوئری را بدون اجرای واقعی آن نمایش میده EXPLAIN ANALYZE کوئری را اجرا میکنه و آمار زمان اجرا را ارائه میکند. این ویژگی یک ابزار ارزشمند برای تحلیل عملکرد کوئریها و شناسایی نقاط قابل بهبود .منابع که شاید برای مطالعه بیشتر دوست داشته باشید .
- لینک
- لینک
-لینک
#تجربه
خیلی دوست دارم کسانی که تجربه کار با این کامند داشتند ، تجربیاتشون رو با ما به اشتراک بگذارند . تاثیراتی که روی دیتابیس و کوئری ها بوده به چه صورتی بود و چقدر تائیر گذار داشته ، آیا این رو به صورت دوره ای schedule کردن ؟
ایا تجربه بدی هم ازش داشتن .
آیا اطلاعات بیشتری یا سناریو هایی بیشتری میشناسید که از این کامند استفاده کنیم ؟
با اشتراک گذاری اطلاعاتتون مارا خوشحال کنید .
سپاس
@panicdev
DataCamp
MySQL ANALYZE TABLE Usage Performance Optimization: Usage & Examples
Optimize MySQL performance with `ANALYZE TABLE`. Learn its usage, examples, and best practices to update table statistics for efficient query execution. Ideal for tables with frequent data changes.
👍6