🔵 عنوان مقاله
A SQL Heuristic: ORs Are Expensive (10 minute read)
🟢 خلاصه مقاله:
OR در SQL اغلب باعث کندی میشود، چون بسیاری از query plannerها برای OR بین ستونهای مختلف به sequential scan یا index merge/bitmap OR متوسل میشوند، در حالیکه AND بهطور طبیعی با compound indexها جور است. یک راه مؤثر، بازنویسی OR به چند کوئریِ ایندکسپسند و ترکیب آنها با UNION/UNION ALL است تا هر شاخه از ایندکس مناسب خود استفاده کند و زمان اجرا گاهی تا ۱۰۰ برابر کاهش یابد. راهحل پایدارتر، بازطراحی schema با extension tables است تا بهجای OR روی چند خاصیتِ پراکنده، با JOIN به جدولهای باریک و ایندکسشده دسترسی پیدا کنید. همیشه با EXPLAIN/EXPLAIN ANALYZE اندازهگیری کنید؛ در جداول کوچک یا OR روی یک ستون (مشابه IN) شاید مشکل نداشته باشید، اما بهطور کلی: AND را با compound index هماهنگ کنید، از OR بین ستونها بپرهیزید، در صورت لزوم از UNION بهره ببرید و برای مسیرهای پرتردد، بازطراحی schema را در نظر بگیرید.
#SQL #DatabasePerformance #QueryOptimization #Indexes #PostgreSQL #MySQL #DataModeling #EXPLAIN
🟣لینک مقاله:
https://ethanseal.com/articles/ors-are-expensive?utm_source=tldrdata
➖➖➖➖➖➖➖➖
👑 @Database_Academy
A SQL Heuristic: ORs Are Expensive (10 minute read)
🟢 خلاصه مقاله:
OR در SQL اغلب باعث کندی میشود، چون بسیاری از query plannerها برای OR بین ستونهای مختلف به sequential scan یا index merge/bitmap OR متوسل میشوند، در حالیکه AND بهطور طبیعی با compound indexها جور است. یک راه مؤثر، بازنویسی OR به چند کوئریِ ایندکسپسند و ترکیب آنها با UNION/UNION ALL است تا هر شاخه از ایندکس مناسب خود استفاده کند و زمان اجرا گاهی تا ۱۰۰ برابر کاهش یابد. راهحل پایدارتر، بازطراحی schema با extension tables است تا بهجای OR روی چند خاصیتِ پراکنده، با JOIN به جدولهای باریک و ایندکسشده دسترسی پیدا کنید. همیشه با EXPLAIN/EXPLAIN ANALYZE اندازهگیری کنید؛ در جداول کوچک یا OR روی یک ستون (مشابه IN) شاید مشکل نداشته باشید، اما بهطور کلی: AND را با compound index هماهنگ کنید، از OR بین ستونها بپرهیزید، در صورت لزوم از UNION بهره ببرید و برای مسیرهای پرتردد، بازطراحی schema را در نظر بگیرید.
#SQL #DatabasePerformance #QueryOptimization #Indexes #PostgreSQL #MySQL #DataModeling #EXPLAIN
🟣لینک مقاله:
https://ethanseal.com/articles/ors-are-expensive?utm_source=tldrdata
➖➖➖➖➖➖➖➖
👑 @Database_Academy
🔵 عنوان مقاله
SkipScan in TimescaleDB: Why DISTINCT Was Slow, How We Built It, and How You Can Use It
🟢 خلاصه مقاله:
SkipScan در TimescaleDB مشکل دیرینهی کندی کوئریهای DISTINCT را هدف میگیرد؛ جایی که برای یافتن مقادیر یکتا، اسکنهای بزرگ و تکراری روی ایندکس انجام میشود. این ویژگی با «پرش» از میان بلوکهای مقادیر تکراری و رفتن مستقیم به مقدار یکتای بعدی، تعداد خواندنها و مقایسهها را کاهش میدهد و DISTINCT و DISTINCT ON را مخصوصاً روی هایپرتیبلهای بزرگ سریعتر میکند. برای بهرهگیری عملی، ایندکسهای B-tree چندستونه همراستا با کلیدهای DISTINCT و ترتیب ORDER BY بسازید؛ برنامهریز بهصورت خودکار در الگوهای مناسب SkipScan را انتخاب میکند و در غیر این صورت به مسیرهای عادی برمیگردد. بیشترین سود زمانی است که دادهها تکرار زیاد و همجواری مناسب در ایندکس داشته باشند.
همزمان، Aksman و Hein از TigerData با همراهی Sebastian Insausti به بهبودهای عملیاتی و گزینههای یکپارچهسازی در Postgres 16 میپردازند؛ از رصد و تنظیمپذیری بهتر گرفته تا سادهتر شدن نگهداری و همگامسازی و تقویت اکوسیستم الحاقات و اتصال به سامانههای دیگر. این تغییرات عملیاتی، در کنار بهینهسازیهایی مانند SkipScan، Postgres 16 را به پایهای توانمندتر برای بارهای تحلیلی و زمانمحور تبدیل میکند.
#TimescaleDB #Postgres16 #SkipScan #DISTINCT #DatabasePerformance #TimeSeries #SQL #Postgres
🟣لینک مقاله:
https://postgresweekly.com/link/175400/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
SkipScan in TimescaleDB: Why DISTINCT Was Slow, How We Built It, and How You Can Use It
🟢 خلاصه مقاله:
SkipScan در TimescaleDB مشکل دیرینهی کندی کوئریهای DISTINCT را هدف میگیرد؛ جایی که برای یافتن مقادیر یکتا، اسکنهای بزرگ و تکراری روی ایندکس انجام میشود. این ویژگی با «پرش» از میان بلوکهای مقادیر تکراری و رفتن مستقیم به مقدار یکتای بعدی، تعداد خواندنها و مقایسهها را کاهش میدهد و DISTINCT و DISTINCT ON را مخصوصاً روی هایپرتیبلهای بزرگ سریعتر میکند. برای بهرهگیری عملی، ایندکسهای B-tree چندستونه همراستا با کلیدهای DISTINCT و ترتیب ORDER BY بسازید؛ برنامهریز بهصورت خودکار در الگوهای مناسب SkipScan را انتخاب میکند و در غیر این صورت به مسیرهای عادی برمیگردد. بیشترین سود زمانی است که دادهها تکرار زیاد و همجواری مناسب در ایندکس داشته باشند.
همزمان، Aksman و Hein از TigerData با همراهی Sebastian Insausti به بهبودهای عملیاتی و گزینههای یکپارچهسازی در Postgres 16 میپردازند؛ از رصد و تنظیمپذیری بهتر گرفته تا سادهتر شدن نگهداری و همگامسازی و تقویت اکوسیستم الحاقات و اتصال به سامانههای دیگر. این تغییرات عملیاتی، در کنار بهینهسازیهایی مانند SkipScan، Postgres 16 را به پایهای توانمندتر برای بارهای تحلیلی و زمانمحور تبدیل میکند.
#TimescaleDB #Postgres16 #SkipScan #DISTINCT #DatabasePerformance #TimeSeries #SQL #Postgres
🟣لینک مقاله:
https://postgresweekly.com/link/175400/web
➖➖➖➖➖➖➖➖
👑 @Database_Academy
Tiger Data Blog
SkipScan in TimescaleDB: Why DISTINCT Was Slow, How We Built It, and How You Can Use It
Learn how TimescaleDB's SkipScan transforms DISTINCT queries from multi-second waits to milliseconds by jumping between values instead of scanning every row.