مرجع فهرست مدل مدل

ساخت وبلاگ

کلاسهای فهرست ایجاد شاخص های پایگاه داده را سهولت می دهند. آنها را می توان با استفاده از گزینه meta. indexes اضافه کرد. این سند منابع API از فهرست را توضیح می دهد که شامل گزینه های فهرست است.

مراجعه به فهرست های داخلی

شاخص ها در django. db. models. indexes تعریف شده اند ، اما برای راحتی آنها را به django. db. models وارد می کنند. کنوانسیون استاندارد استفاده از مدل های واردات django. db است و از فهرست ها به عنوان مدل استفاده می شود. واد

گزینه های فهرست

شاخص کلاس ( * عبارات ، زمینه ها = () ، نام = هیچ ، db_tablespace = هیچ ، opclasses = () ، شرط = هیچ ، شامل = هیچ)

یک شاخص (درخت B) در پایگاه داده ایجاد می کند.

اصطلاحات ¶

آرگومان مثبت *عبارات اجازه می دهد تا شاخص های عملکردی در عبارات و توابع پایگاه داده ایجاد شود.

یک شاخص را در مقدار پایین قسمت عنوان به ترتیب نزولی و قسمت pub_date به ترتیب صعودی پیش فرض ایجاد می کند.

یک شاخص در نتیجه ضرب قد و وزن مزارع و وزن گرد به نزدیکترین عدد صحیح ایجاد می کند.

index. name هنگام استفاده از عبارات *لازم است.

محدودیت در اوراکل

اوراکل به توابع ارجاع شده در یک شاخص نیاز دارد تا به عنوان قطعی مشخص شود. جنگو این را تأیید نمی کند اما اوراکل خطا خواهد کرد. این بدان معنی است که توابع مانند تصادفی () پذیرفته نمی شوند.

محدودیت در postgresql

PostgreSQL به توابع و اپراتورهای ارجاع شده در یک شاخص نیاز دارد تا به عنوان تغییر ناپذیر مشخص شوند. Django این امر را تأیید نمی کند اما PostgreSQL خطا خواهد کرد. این بدان معنی است که توابع مانند Concat () پذیرفته نمی شوند.

mysql و mariadb

شاخص های عملکردی با MySQL نادیده گرفته می شوند<8.0.13 and MariaDB as neither supports them.

زمینه های ¶

لیستی یا نامگذاری نام قسمت هایی که در آن شاخص مورد نظر است.

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

به عنوان مثال شاخص (فیلدها = ['تیتر' ، '-pub_date']) SQL را با (تیتر ، pub_date desc) ایجاد می کند.

mysql و mariadb

نام فهرست. اگر نام ارائه نشده باشد Django نام خود را ایجاد می کند. برای سازگاری با پایگاه داده های مختلف ، نام فهرست ها نمی توانند بیش از 30 کاراکتر باشند و نباید با یک عدد (0-9) یا تأکید (_) شروع شوند.

شاخص های جزئی در کلاسهای پایه انتزاعی

شما همیشه باید یک نام منحصر به فرد برای یک فهرست مشخص کنید. به این ترتیب، به طور معمول نمی توانید یک شاخص جزئی را در یک کلاس پایه انتزاعی تعیین کنید، زیرا گزینه Meta. indexes توسط زیر کلاس ها به ارث می رسد، با مقادیر دقیقاً یکسان برای ویژگی ها (از جمله نام) هر بار. برای مقابله با برخورد نام، بخشی از نام ممکن است حاوی «%(app_label)s» و «%(class)s» باشد که به ترتیب با برچسب برنامه کوچک و نام کلاس مدل بتن جایگزین می شوند. برای مثال Index(fields=['title'], name='%(app_label)s_%(class)s_title_index').

db_tablespace ¶

نام جدول پایگاه داده برای استفاده برای این فهرست. برای نمایه های تک فیلد، اگر db_tablespace ارائه نشده باشد، ایندکس در db_tablespace فیلد ایجاد می شود.

اگر Field. db_tablespace مشخص نشده باشد (یا اگر ایندکس از چندین فیلد استفاده می کند)، ایندکس در tablespace مشخص شده در گزینه db_tablespace در کلاس Meta مدل ایجاد می شود. اگر هیچ یک از این جدول ها تنظیم نشده باشد، ایندکس در همان جدول جدول ایجاد می شود.

برای لیستی از نمایه های خاص PostgreSQL، به django. contrib. postgres. indexes مراجعه کنید.

کلاس ها ¶

نام کلاس های عملگر PostgreSQL برای استفاده برای این شاخص. اگر به یک کلاس عملگر سفارشی نیاز دارید، باید برای هر فیلد در ایندکس یک کلاس ارائه دهید.

به عنوان مثال، GinIndex(name='json_index', fields=['jsonfield'], opclasses=['jsonb_path_ops']) با استفاده از jsonb_path_ops یک نمایه جین در jsonfield ایجاد می کند.

opclasses برای پایگاه داده ها علاوه بر PostgreSQL نادیده گرفته می شود.

Index. name هنگام استفاده از opclasses مورد نیاز است.

وضعیت ¶

اگر جدول بسیار بزرگ است و پرس و جوهای شما بیشتر زیرمجموعه ای از ردیف ها را هدف قرار می دهند، ممکن است مفید باشد که یک شاخص را به آن زیر مجموعه محدود کنید. یک شرط را به عنوان Q مشخص کنید. برای مثال شرط=Q(pages__gt=400) رکوردهایی با بیش از 400 صفحه را فهرست می کند.

Index. name هنگام استفاده از شرط لازم است.

محدودیت در postgresql

PostgreSQL به توابع ارجاع شده در شرط نیاز دارد که به عنوان IMMUTABLE علامت گذاری شوند. جنگو این را تایید نمی کند اما PostgreSQL خطا می کند. این بدان معنی است که توابعی مانند توابع تاریخ و Concat پذیرفته نمی شوند. اگر تاریخ ها را در DateTimeField ذخیره می کنید، مقایسه با اشیاء datetime ممکن است نیاز به ارائه آرگومان tzinfo داشته باشد زیرا در غیر این صورت مقایسه می تواند منجر به یک تابع قابل تغییر به دلیل ریخته گری جنگو برای جستجوها شود.

محدودیت در SQLite

SQLite محدودیت هایی را در مورد نحوه ساخت یک شاخص جزئی اعمال می کند.

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

mysql و mariadb

استدلال شرط با MySQL و MARIADB نادیده گرفته می شود زیرا هیچکدام از شاخص های مشروط پشتیبانی نمی کنند.

عبارتند از ¶

لیستی از نام های قسمت هایی که باید در فهرست پوشش به عنوان ستون های غیر کلید درج شود. این اجازه می دهد تا از اسکن های فقط شاخص برای نمایش داده شده استفاده شود که فقط زمینه های شامل (شامل) را انتخاب می کنند و فقط توسط زمینه های فهرست بندی شده (فیلدها) فیلتر می شوند.

اجازه می دهد تا فیلتر بر روی عنوان ، همچنین انتخاب PUB_DATE ، در حالی که داده ها را فقط از فهرست دریافت می کنید.

استفاده از شامل یک شاخص کوچکتر از استفاده از شاخص ستون چندگانه تولید می کند اما با این اشکال که از ستون های غیر کلید نمی توان برای مرتب سازی یا فیلتر استفاده کرد.

علاوه بر PostgreSQL ، برای بانکهای اطلاعاتی نادیده گرفته می شود.

index. name هنگام استفاده از موارد مورد نیاز است.

برای اطلاعات بیشتر در مورد پوشش شاخص ها ، به مستندات PostgreSQL مراجعه کنید.< Span> اوراکل از شاخص های جزئی پشتیبانی نمی کند. در عوض ، شاخص های جزئی را می توان با استفاده از شاخص های عملکردی به همراه عبارات موردی تقلید کرد.

استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید

برچسب : نویسنده : مرجان شیرمحمدی بازدید : 39 تاريخ : جمعه 8 ارديبهشت 1402 ساعت: 11:41