بهترین روشها برای فیلتر و سفارش

ساخت وبلاگ

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

انتخاب ستون ها برای استفاده در بند WHERE

بهترین روش: در صورت امکان ، از ستون های BOOL ، INT ، شناور یا تاریخ در بند WHERE استفاده کنید.

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

سفارشات پرس و جو را برای به حداکثر رساندن عملکرد سفارش دهید

بهترین تمرین: فقط در بیرونی ترین پرس و جو یا در بندهای پنجره از سفارش استفاده کنید. عملیات پیچیده را به انتهای پرس و جو فشار دهید.

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

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

تکنیک دیگر برای سفارش پرس و جو شما فشار آوردن به عملیات پیچیده مانند عبارات منظم و عملکردهای ریاضی ، به پایان پرس و جو است. باز هم ، این تکنیک اجازه می دهد تا قبل از انجام عملیات پیچیده ، داده ها تا حد امکان هرس شود.

از محدوده با بند استفاده کنید

بهترین روش: اگر تعداد بسیار زیادی از ارزش ها را سفارش می دهید اما نیازی به بازگشت همه آنها ندارید ، از یک بند محدود استفاده کنید.

هنگام بازگشت تعداد محدودی از سوابق برای سناریوی خود ، از یک بند محدود با یک بند به ترتیب استفاده کنید. وقتی این کار را نکرد ، به جای آن از یک عملکرد پنجره استفاده کنید.

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

عنوان را از `my-project. mydataset. mytable 'با عنوان انتخاب کنید.

برای رفع خطا ، از پرس و جو مانند موارد زیر استفاده کنید:

عنوان را از `my-project. mydataset. mytable 'سفارش توسط عنوان محدوده DESC 1000 انتخاب کنید.

از محدوده و عملکرد پنجره با یک بند به بند استفاده کنید

بهترین روش: اگر تعداد بسیار زیادی از مقادیر را سفارش می دهید ، از یک عملکرد پنجره استفاده کنید و قبل از تماس با عملکرد پنجره ، داده ها را محدود کنید.

به عنوان مثال ، پرس و جو زیر ده کاربر قدیمی سرریز پشته و رتبه آنها را ذکر می کند ، که قدیمی ترین حساب در رده پایین قرار دارد:

شناسه ، شهرت ، ایجاد_دیت ، متراکم_رنک () را انتخاب کنید (سفارش توسط creation_date) به عنوان user_rank از bigQuery-public-data. stackoverflow. users سفارش توسط user_rank asc حد 10 ؛

این پرس و جو تقریباً 15 ثانیه طول می کشد. این پرس و جو در انتهای پرس و جو از حد مجاز استفاده می کند ، اما نه در عملکرد پنجره متراکم (). به همین دلیل ، پرس و جو به همه داده ها نیاز دارد تا روی یک گره کارگر مرتب شوند.

در عوض ، شما باید قبل از محاسبه عملکرد پنجره ، مجموعه داده را محدود کنید تا عملکرد بهبود یابد:

با کاربران به عنوان (شناسه ، شهرت ، creation_date ، از bigQuery-public-data. stackoverflow. users سفارش توسط ایجاد_دیت ASC محدودیت 10) شناسه ، اعتبار ، ایجاد ، متراکم ، متراکم ، متراکم ، متراکم ، متراکم ، متراکم ، بیش از (سفارش توسط ایجاد شده) به عنوان user_rank از ترتیب کاربران توسط کاربرانuser_rank ؛

این پرس و جو تقریباً 2 ثانیه طول می کشد ، در حالی که همان نتایج مشابه پرس و جو قبلی را برمی گرداند.

یک نکته جالب این است که عملکرد متراکم_نک () در طی سالها داده ها را رتبه بندی می کند ، بنابراین اگر می خواهید داده های چند سال را رتبه بندی کنید ، این نمایش داده ها نتیجه یکسان نمی کنند.

ارسال بازخورد

به جز آنچه در غیر این صورت ذکر شد ، محتوای این صفحه تحت مجوز Creative Commons Attribution 4. 0 مجوز دارد و نمونه های کد تحت مجوز Apache 2. 0 مجوز دارند. برای جزئیات بیشتر ، به سیاست های سایت Google Developers مراجعه کنید. جاوا یک علامت تجاری ثبت شده اوراکل و/یا شرکت های وابسته به آن است.

آخرین به روز شده 2023-03-13 UTC.

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

برچسب : نویسنده : کامران فیوضات بازدید : <-PostHit-> تاريخ : جمعه 6 مرداد 1402 ساعت: 20:22