PDA

View Full Version : آموزش: نحوه صحیح کوئری گیری و طراحی جدول برای افزایش سرعت کوئری ها



idocsidocs
جمعه 30 دی 1390, 20:04 عصر
توی این تاپک قصد دارم که یه مرجع برای نکات مربوط به کوئری گرفتن و افزایش سرعت کوئری ها ایجاد کنم. من یه سری نکته می گم و سایر دوستان هم لطفا هر نکته ای به ذهنشون می رسه رو اینجا قرار بدن تا یه مرجع مناسب برای کوئری گیری صحیح و افزایش سرعت کوئری ها ایجاد بشه.

لطفا قبل از اینکه یه نکته رو توی تاپک درج کنید، ابتدا نکاتی که سایر دوستان گفتن رو بخونید تا از تکرار جلوگیری بشه.

لطفا از لینک دادن و یا استفاده از عبارت سرچ کنید و ... خودداری کنید.

لطفا سوالات خودتون، لینکها و مباحث غیر آمازشی رو توی این تاپک مطرح کنید. (http://barnamenevis.org/showthread.php?324093-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D9%85%D8%B1%D8%A8%D9%88%D8%B7-%D8%A8%D9%87-%D8%AA%D8%A7%D9%BE%DA%A9-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-quot-%D9%86%D8%AD%D9%88%D9%87-%D8%B5%D8%AD%DB%8C%D8%AD-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%DA%AF%DB%8C%D8%B1%DB%8C-%D9%88-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D8%AC%D8%AF%D9%88%D9%84-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A7%D9%81%D8%B2%D8%A7%DB%8C%D8%B4-%D8%B3%D8%B1%D8%B9%D8%AA-%DA%A9%D9%88%D8%A6%D8%B1%DB%8C-%D9%87%D8%A7-quot&p=1423176#post1423176)

از همکاری دوستان تشکر می کنم.

idocsidocs
جمعه 30 دی 1390, 20:04 عصر
با توجه به کوئری زیر نکاتی که به ذهن خودم می رسه رو در ادامه بیان می کنم:


SELECT `id`, `field1`, `field2`, `field3` FROM `tb1` WHERE (`id`='5' && `field1`='$val1') LIMIT 1

1- برای خوانایی بیشتر کد، کلماتی که حاوی متغیر، اسم فیلد، اسم جدول و ... نیستن و جز سینتکس کوئری محصوب می شن رو با حروف بزرگ بنویسید.

2- اسامی فیلدها و جدولها رو بین کاراکترهای ` ` قرار بدید تا MySQL بدونه منظور ما اسم یه فیلد یا جدول هست.

3- اسامی متغیر رو بین کاراکترهای ' ' قرار بدید تا MySQL بدونه که منظور ما یه رشته هست و باید با با مقدار اصلی تعویض بشه.

4- فقط درصورتی از * استفاده کنید که بخوایم همه فیلدها رو از جدول بیرون بکشیم.

5- اگر نمی خواید همه ردیفها رو از جدول بیرون بکشید از LIMIT استفاده کنید تا بعد از پیدا کردن ردیف مورد نظر، سرچ کردن توی دیتابیس به اتمام برسه و از پردازش بیشتر جلوگیری بشه.

6- بجای and و or از && و || استفاده کنید از سپری شدن زمان برای تبدیل and و or به معادل خودشون که همون && و ||هستن جلوگیری بشه.

7- فیلدهایی که قرار روی اونها دستورهای شرطی انجام بشه رو ایندکس کنید.

eshpilen
جمعه 30 دی 1390, 21:11 عصر
بعضی مواردی که میگی بنظر من خیلی جزیی هستن و در عمل تاثیر مشهودی حداقل در سیستمهای معمولی ندارن.
مثلا اینکه گفتی «جای and و or از && و || استفاده کنید».
این یخورده تبدیل در رایانه های امروزی هیچی نیست. یحتمل نویزی که در فرایندها هست بیشتر از اون تاثیر داره.
زمان اجرای خود کوئری خیلی خیلی خیلی بیشتر از یک همچین چیزهایی هست. پس خودتون رو زیادی اذیت نکنید. بنظر من در اینطور موارد هرکدام که خواناتر هست باید استفاد کرد. من خودم از and و or استفاده میکنم.