تعریف Index و View در SQL
تعریف ایندکسها
ایندکس (Index) یک ساختار داده نامرئی است که دسترسی به جدول را سریعتر میکند. ایندکسها با دستور CREATE INDEX ساخته میشوند، در صورت مناسببودن SQL بهطور خودکار از آنها استفاده میکند و با DROP INDEX از پایگاه داده حذف میشوند.
CREATE INDEX GJX
ON PERSONS (GENDER, JOB);
DROP INDEX GJX;
ایندکسها با CREATE INDEX افزوده میشوند
نام ایندکس باید در پایگاه داده یکتا باشد و سیستم از آن بهصورت داخلی استفاده میکند. همین نام هنگام حذف ایندکس نیز به کار میرود.
ایندکسها خودکار استفاده میشوند
وقتی ایندکس مناسب تعریف شده باشد، Queryها زمان کمتری برای اجرا نیاز دارند. با این حال، ایندکس فضای دیسک اضافی مصرف میکند و عملیات نگهداری را کند میکند، زیرا خود ایندکس نیز باید بهروزرسانی شود.
ایندکسها با DROP INDEX حذف میشوند
برای حذف ایندکس از DROP INDEX استفاده کنید. داده جدول باقی میماند و فضای دیسکی اشغالشده توسط ایندکس آزاد میشود. طبق متن منبع، CREATE و DROP هنگام اجرا بهطور خودکار Commit میشوند.
صفحه PDF 89 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
تعریف ایندکسها - ادامه
نحو عمومی CREATE INDEX و DROP INDEX:
CREATE INDEX index
ON table (col list);
-- Example
CREATE INDEX GJX
ON PERSONS (GENDER, JOB);
DROP INDEX index;
-- Example
DROP INDEX GJX;
تمرینها
- جدولی به نام
REGIONS با یک ستون CHAR(10) به نام NAME ایجاد کنید. چهار سطر North، South، East و West درج کنید. سپس جدول را چند بار در خودش Insert کنید تا تقریباً 65,536 سطر داشته باشد. - سطرها را با زیرجمع بر اساس نام منطقه بشمارید و زمان لازم برای اجرای Query را یادداشت کنید.
- ایندکسی به نام
RX روی ستون NAME جدول REGIONS بسازید. Query قبلی را دوباره اجرا کنید. سریعتر است، کندتر است یا تقریباً همان زمان را دارد؟ چرا؟ - ایندکس و جدول را Drop کنید.
صفحه PDF 90 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
تعریف Viewها
View یک جدول مجازی است که از جدولها یا Viewهای دیگر پایگاه داده مشتق میشود. View بهصورت فیزیکی در پایگاه داده ذخیره نمیشود، اما میتوان مانند یک جدول واقعی از آن Query گرفت.
CREATE VIEW PTV (PERSON, NAME, TITLE)
AS
SELECT PERSON, NAME, TITLE
FROM PERSONS AS P, JOBS AS J
WHERE P.JOB = J.JOB;
DROP VIEW PTV;
Viewها با CREATE VIEW افزوده میشوند
Viewها برای اطلاعاتی که زیاد استفاده میشوند ولی استخراجشان دشوار است - مانند خلاصههای چندجدولی - مفیدند. تقریباً هر Query را میتوان برای تعریف View استفاده کرد، با این استثنا که تعریف View نمیتواند Clause ORDER BY داشته باشد.
برخی Viewها قابل بهروزرسانیاند
معمولاً Viewی که از یک جدول ایجاد شده و همه ستونهای غیرNull لازم را شامل میشود قابل Update است؛ سایر Viewها ممکن است نباشند. تغییر اطلاعات از طریق View، در صورت امکان، داده جدولهای زیرین را تغییر میدهد.
Viewها با DROP VIEW حذف میشوند
برای حذف View از DROP VIEW استفاده کنید. حذف View هیچ دادهای را از جدولهای زیرین حذف نمیکند. CREATE و DROP طبق متن منبع هنگام اجرا خودکار Commit میشوند.
صفحه PDF 91 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده
تعریف Viewها - ادامه
نحو عمومی CREATE VIEW و DROP VIEW:
CREATE VIEW view (col list)
AS
SELECT ...;
-- Example
CREATE VIEW PTV (PERSON, NAME, TITLE)
AS
SELECT ...;
DROP VIEW view;
-- Example
DROP VIEW PTV;
تمرینها
- Viewی به نام
IV بسازید که همان ستونهای جدول PERSONS را داشته باشد، اما فقط اشخاصی را شامل شود که در اسرائیل متولد شدهاند. برای تأیید از View Query بگیرید. - دوستی را با شماره 502 و کشور Israel از طریق View IV درج کنید. سپس یک دوست قدیمی را با شماره 503 و کشور USA در IV درج کنید. چه اتفاقی برای دوست قدیمی شما افتاد؟
- Viewی به نام
IJV بر پایه View IV بسازید. ستونهای NAME، BDATE و COUNTRY را همراه با ستون TITLE از جدول JOBS در آن بگنجانید. - همه Viewهای خود را Drop کنید. متشکریم؛ خداحافظ.
صفحه PDF 92 - تصویر منبع اصلی برای کنترل بصری و حفظ عناصر اسکنشده