PDA

View Full Version : سوال: استفاده از این دو روش می تونه باعث افزایش سرعت کوئری گیری و بهینه شدن دیتابیس بشه؟



idocsidocs
جمعه 20 مرداد 1391, 13:15 عصر
1- استفاده از نوع enum برای ستونهایی که مقدارشون مشخصه و نباید با مقادیر از پیش تعیین شده تفاوت داشته باشه.

2- کم کردن تعداد ستونهای جدول

بهزاد علی محمدزاده
جمعه 20 مرداد 1391, 23:55 عصر
سلام . برای اولی من یه جستجو توی کتاب High Performance MySQL انجام دادم . بله مثل اینکه تاثیر داره ، یه مثال زده :

mysql> CREATE TABLE enum_test(
-> e ENUM('fish', 'apple', 'dog') NOT NULL
-> );
mysql> INSERT INTO enum_test(e) VALUES('fish'), ('dog'), ('apple');

و گفته : The three rows actually store integers ... در واقع این سه سطر بصورت integer ذخیره شدن و سرعت بازیابی integer از string بیشتر هست . ( البته این و ننوشته ... )

idocsidocs
شنبه 21 مرداد 1391, 11:04 صبح
بنظرتون کاهش تعداد ستونهای جدول می تونه باعث افزایش سرعت کوئری گیری بشه؟

colors
شنبه 21 مرداد 1391, 11:23 صبح
بنظرتون کاهش تعداد ستونهای جدول می تونه باعث افزایش سرعت کوئری گیری بشه؟

بله مطمئنا تاثیر داره و در همین رابطه هم بحث نرمال سازی وجود داره که در موردش تحقیق کنی چیزای خوبی گیرت میاد

idocsidocs
شنبه 21 مرداد 1391, 12:35 عصر
بله مطمئنا تاثیر داره و در همین رابطه هم بحث نرمال سازی وجود داره که در موردش تحقیق کنی چیزای خوبی گیرت میاد

یه توضیح اجمالی در مورد نرمال سازی می دید؟

بهزاد علی محمدزاده
شنبه 21 مرداد 1391, 13:09 عصر
از این دو تا وبلاگ بخون : لینک (http://amib.ir/weblog/?p=306)لینک (http://www.hpkclasses.ir/Courses/DataBase/db0900.html)

idocsidocs
سه شنبه 24 مرداد 1391, 14:45 عصر
از این دو تا وبلاگ بخون : لینک (http://amib.ir/weblog/?p=306)لینک (http://www.hpkclasses.ir/Courses/DataBase/db0900.html)

شما توی طراحی دیتابیس از این روش استفاده می کنید؟

این روش تعداد جداول رو زیاد می کنه و اگر چند میلیون رکورد داشته باشیم و موقع کوئری گیری بخوایم از چند جدول کوئری بگیریم سرعت سایت پایین می یاد. مخصوصا اگه هاست اشتراکی باشه.

اگر از این روش استفاده می کنید، می شه بگید وقتی 2 میلیون ردیف توی دیتابیس ذخیره می کنید و می خواید 25 ردیف رو بیرون بکشید، زمان اجرای کوری چقدر می شه؟

بهزاد علی محمدزاده
پنج شنبه 26 مرداد 1391, 12:18 عصر
این نرمالسازی دیتابیس هست . تعداد جدول ها وقتی زیاد بشه با join به حالت مورد نظر بر می گرده ، منتهی اگر نرمالسازی نداشته باشید ، مشکلاتی از قبیل افزونگی ( تکرار اطلاعات ) رو دارید .

مثلا ، نرمالسازی 1NF میگه هیچ صفتی قابل تجزیه نباشه ، یعنی مثلا فیلد آدرس رو به تنهایی نباید داشته باشید : تهران خیابان ... ، اگر بخواید query های رو بر اساس مثلا استان مورد نظر انجام بدید که مشکلاتتون بیشتر خواهد شد . و یا فیلد نام و نام خانوادگی نباید یکی باشه ... و ...

زمان اجرای این query مورد نظر شما ، اینجوری قابل بررسی نیست ، بستگی داره به دیتابیس . اما یکی از روشها ایندکس گذاری فیلد ها هست . که بطور ساده و خلاصه میشه اینجوری تعریف کرد که وقتی شما بر روی یه فیلد ایندکس گذاری رو انجام میدن ، عملیات واکشی و مرتب سازی بر روی اون فیلد انجام میشه ، و با الگوریتم هایی مثل جستجوی باینری ، داده مورد نظر با سرعت بالا پیدا میشه ، و اونوقت که پیدا شد ، اشاره می کنه به رکورد اصلی خودش در جدول مربوطه .

و داشتن یه دیتابیس بهینه از طراحی شروع میشه تا نوشتن دستورات بهینه .

idocsidocs
شنبه 28 مرداد 1391, 17:08 عصر
و داشتن یه دیتابیس بهینه از طراحی شروع میشه تا نوشتن دستورات بهینه .
فرض کنید توی جدول سه فیلد شامل کلید اصلی، عنوان و متن مقاله دارید. عنوان مقاله حداکثر 250 کاراکتر داره و متن مقاله از نوع longtext هست.

اگر توی این جدول یک میلیون مقاله ذخیره کنید، توی لوکال سرعت سایت شما پایین نمی یاد؟