استفاده از Index در پایگاه داده

foranyone

Well-Known Member
Indexes in databases are very similar to indexes in libraries. Indexes allow locating informationwithin a database fast, much like they do in libraries. If all books in a library are indexed alphabetically thenyou don’t need to browse the whole library to find particular book. Instead you’ll simply get the first letterfrom the book title and you’ll find this letter’s section in the library starting your search from there, whichwill narrow down your search significantly
]


ایندکس در پایگاه داده بسیار شبیه ایندکس در کتابخانه ها می باشد ایندکسها کمک می کنند تا
[FONT=&quot] اطلاعات در پایگاه داده سریعتر مکان یابی شود .شبیه عملکردی که در

کتابخانه ها انجام
[/FONT]
[FONT=&quot] می گیرد .

[/FONT]

[FONT=&quot] اگر تمامی کتاب ها در قفسه های کتابخانه براساس حروف الفبا مرتب سازی شود شما نیاز[/FONT][FONT=&quot] ندارید تا کل کتابخانه را برای یافتن کتاب خاص جستجو نمایید . در عوض با

استفاده از حرف اول
[/FONT][FONT=&quot] عنوان کتاب بخش مربوط به آن حرف را پیدا خواهید کرد و جستجو را در بین کتاب های آن بخش [/FONT][FONT=&quot]شروع خواهید داد .که به صورت قابل توجهی حجم

جستجو را محدود خواهد کرد .
[/FONT]


An Index can be created on a single column or a combination of columns in a database table. A table index is a database structure that arranges the values of one or more columns in a database table in specific order. The table index has pointers to the values stored in specified column or combination of columns of the table. These pointers are ordered depending on the sort order specified in the index.
در جداول پایگاه داده یک index می تواند بر روی یک ستون و یا ترکیبی از ستون ها تعریف شود . ایندکس جدول یک ساختار پایگاه داده می باشدکه مقادیر یک و یا چند

جدول را بر اساس ترتیب معینی مرتب میکند .

ایندکس جدول یک اشاره گر به مقادیر ذخیره شده در ستون مشخص شده و یا ترکیبی از ستون ها دارد این اشاره گرها براساس ترتیب مشخص شده در index مرتب

می باشند .



The syntax for creating indexes varies greatly amongst different RDBMS, that’s why we will not discuss this matter further.
There are some general rules which describe when to use indexes. When dealing with relatively small tables, indexes do not improve performance. In general indexes improve performance when they are created on fields used in table joins.


Syntax ایجاد ایندکس در RDBMS ( مخفف سیستم های مدیریت پایگاه داده رابطه ای) های مختلف متفاوت می باشد. (چرایی این موضوع اینجا بحث نمی شود )

یک سری قوانین عمومی وجود دارد که مشخص میکند چه موقع از ایندکس باید استفاده شود :

+ هنگامی که با جداول نسبتا کوچک سر و کار دارید ایندکس ها کارایی زیادی ندارند .

+ به صورت کلی ایندکس ها عملکرد را زمانی بهبود می بخشند که بر روی ستون هایی تعریف شوند که در join جداول استفاده شده است.

Use indexes when most of your database queries retrieve relatively small datasets, because if your queries retrieve most of the data most of the time, the indexes will actually slow the data retrieval. Use indexes for columns that have many different values (there are not many repeated values within the column). Although indexes improve search performance, they slow the updates, and this might be something worth considering

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

ایندکسها باعث کندی تراکنش اطلاعات از جدول خواهند شد . .

+ از ایندکس زمانی استفاده نمایید که مقادیر یک ستون تنوع داده ای زیادی داشته باشد به عبارتی تعداد داده ه های تکراری ها در یک ستون کم باشد


علارغم اینکه ایندکس ها باعث بهبود سرعت جستجو می شوند آنها زمان بروزرسانی ها را افزایش می دهند و این مورد باید در نظر گرفته شود .



پایان بخش یک :

منبع
 
آخرین ویرایش:

foranyone

Well-Known Member
Mysql چگونه از index استفاده میکند ؟

Indexes are used to find rows with specific column values quickly. Without an index, MySQL must begin with the first row and then read through the entire table to find the relevant rows. The larger the table, the more this costs. If the table has an index for the columns in question, MySQL can quickly determine the position to seek to in the middle of the data file without having to look at all the data. If a table has 1,000 rows, this is at least 100 times faster than reading sequentially. If you need to access most of the rows, it is faster to read sequentially, because this minimizes disk seeks.

ایندکس برای یافتن سطرهایی از جدول با مقادیر ستونی مشخص و به صورت سریعتر استفاده می شوند .بدون ایندکس Mysql می بایست از سطر اول جدول شروع کرده و محتوای تمام سطرهای جدول را بخواند تا سطرهای مناسب انتخاب شوند . این مسئله در جداول بزرگتر بیشتر زمانبر خواهد بود .

درصورتی که جدول برای ستون یا ستون ها خود از ایندکس استفاده نماید Mysql میتواند به سرعت بدون اینکه سراغ تک تک سطرهای جدول برود میتواند مکان های مناسب برای جستجو را تعیین نماید .

برای مثال در صورتی که یک جدول هزار سطر اطلاعات داشته باشد تعیین ایندکس حداقل صد برابر باعث سریعتر شدن سرعت جستجو نسبت به خواندن متوالی همه سطرهای جدول خواهد شد .

درصورتی که میخواهید به سطرهای بیشتری دسترسی داشته باشید به عبارتی مقادیر بیشتری از اطلاعات یا سطرها را انتخاب کنید خواندن متوالی و ترتیبی سریعتر خواهد بود چون به دیسک سیک ( حرکت اهرم هاردیسک)
کمتری نیاز خواهد بود .



Most MySQL indexes (PRIMARY KEY, UNIQUE, INDEX, and FULLTEXT) are stored in B-trees. Exceptions are that indexes on spatial data types use R-trees, and that MEMORY tables also support hash indexes.http://dev.mysql.com/doc/refman/5.0/en/create-index.html


ایندکس های Mysql شامل کلید اصلی ، یونیک ، ایندکس و فول تکست در یک درخت از نوع B-tree ذخیره میشوند

(B-tree یک نوع درخت برای ذخیره اطلاعات می باشد که در ساختمان داده ها بحث می شود )

مورد استثنایی که بجای b-tree از r-tree استفاده میکند داده های سه بعدی (Spatial data types) می باشند

و همچنین جداول حافظه از ایندکسهای هش پشتیبانی می کنند .

ادامه دارد ....




 

جدیدترین ارسال ها

بالا