با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش SQLite را دنبال می کنند. INDEX ها در SQLite یک ساختار داده است که سرعت عملیات در یک جدول را بهبود می بخشد. INDEX ها در SQLite را می توان با استفاده از یک یا چند ستون ایجاد کرد، و مبنای باینری را برای جستجوی سریع و دسترسی به داده ها فراهم می کند. INDEXکمک می کند تا پرس و جوهای SELECT و WHERE سریعتر انجام شود، اما سرعت ورودی داده ها را با عبارات UPDATE و INSERT کند می کند.در واقع، INDEX نیز نوعی جدول هستند که فیلد index را نگه می دارند و یک اشاره گر به هر یک از رکوردهای جداول موجود دارد. در ادامه ی این مباحث برای آشنایی با INDEX ها در SQLite با ما همراه باشید.
در ادامه ی این آموزش با انواع Index ها در SQLite و نحوه ی کار با آن ها آشنا می شوید.
سینتکس اصلی دستور Index ها در SQLite به صورت زیر است :
1 | CREATE INDEX index_name ON table_name; |
یک index تک ستونی، یکی است که بر اساس تنها ستون یک جدول ایجاد می شود.
این سینتکس اصلی index تک ستونی است :
1 2 | CREATE INDEX index_name ON table_name (column_name); |
index های یکتا نه تنها برای کارایی استفاده می شوند بلکه برای یکپارچگی داده نیز کاربرد دارند.
یک index یکتا اجازه ی درج رکوردهای تکراری در یک جدول را نمی دهد.
سینتکس تعریف index های یکتا روی یک جدول به صورت زیر است:
1 2 | CREATE UNIQUE INDEX index_name on table_name (column_name); |
یک index مرکب، یک index است که روی دو یا چند ستون در یک جدول اعمال می شود.
سینتکس تعریف index مرکب روی ستون های یک جدول به صورت زیر است :
1 2 | CREATE INDEX index_name on table_name (column1, column2); |
ممکن است برای انتخاب ستون ها در index تکی و index مرکب، از یک عبارت شرطی WHERE استفاده کنید.
اگر در ساختار WHERE دو یا چند ستون باید انتخاب شوند، index مرکب بهترین انتخاب است.
index های ضمنی توسط سرور دیتابیس، بصورت خودکار در زمان ایجاد یک آبجکت ایجاد می شوند.
مثال
در این مثال ما یک index در جدول COMPANY برای ستون salary ایجاد می کنیم :
1 | sqlite> CREATE INDEX salary_index ON COMPANY (salary); |
برای لیست کردن تمام index های موجود در جدول COMPANY از دستور indices. به صورت زیر استفاده کنید :
1 | sqlite> .indices COMPANY |
کد فوق نتیجه ی زیر را تولید می کند sqlite_autoindex_COMPANY_1 که index ضمنی در زمان ایجاد جدول ایجاد می شود:
1 2 | salary_index sqlite_autoindex_COMPANY_1 |
شما می توانید تمام index های دیتابیس را به صورت زیر مشاهده کنید :
1 | sqlite> SELECT * FROM sqlite_master WHERE type = 'index'; |
یک index می تواند با استفاده از دستور DROP در SQLite حذف شود.
هنگام حذف یک index باید مراقب باشید زیرا ممکن است کارایی کاهش یافته یا بهبود یابد.
سینتکس اصلی حذف index به صورت زیر است :
1 | DROP INDEX index_name; |
حالا index ایجاد شده در مثال قبل را به صورت زیر حذف می کنیم:
1 | sqlite> DROP INDEX salary_index; |
اگر چه index ها در نظر گرفته شده اند تا عملکرد پایگاه داده را افزایش دهند، اما زمان هایی وجود دارد که از آنها باید اجتناب شود.
در موارد زیر باید از استفاده از index ها اجتناب شود :
دستوراتی از جمله INSERT و UPDATE در زمان افزودن و یا حذف داده ها در جداول ، index های آن ها را نیز تغییر می دهند. به همین خاطر زمان بیشتری را می گیرد، اما شما می توانید با INDEX ها در SQLite مدت زمان این عملیات را کمتر کنید.