כן, מכיוון ששימוש ב-DISTINCT יגרום (לפעמים על פי הערה) יגרום ל- הזמנת תוצאות מיון מאות רשומות לוקח זמן. נסה GROUP BY את כל העמודות שלך, זה יכול לפעמים להוביל את מייעל השאילתות לבחור באלגוריתם יעיל יותר (לפחות עם Oracle שמתי לב לשיפור משמעותי בביצועים).
האם זה רע להשתמש במובחן?
ובכן, שימוש לא נכון ב"מובחן" לא רק מסתיר את הבעיה האמיתית (ערכים כפולים בטבלאות, חוסר תנאי בסעיף on) כפי שנדון לעיל, אלא גם משפיל את ביצועי השאילתה… זה יביא לעלייה משמעותית של עלות ה-IO (קריאה לוגית) של השאילתה.
האם הבדל הופך את השאילתה לאטית יותר?
מעט מאוד שאילתות עשויות להופיע מהר יותר במצב SELECT DISTINCT, ו- very few יפעלו לאט יותר (אך לא איטי משמעותית) במצב SELECT DISTINCT, אבל במקרה המאוחר יותר זה סביר להניח שייתכן שהאפליקציה תצטרך לבחון את המקרים הכפולים, מה שמעביר את נטל הביצועים והמורכבות לאפליקציה.
האם עדיף להשתמש ב-Distinct או GROUP BY?
ב-MySQL, DISTINCT נראה קצת יותר מהיר מ-GROUP BY אם השדה אינו מתווסף לאינדקס. DISTINCT מבטלת רק שורות כפולות, אבל נראה ש-GROUP BY ממיין אותן בנוסף.
למה אנחנו לא צריכים להשתמש ב-distinct ב-SQL?
אם בחירה נבדלת היא שם כדי 'לתקן' בעיה, סביר להניח שתקבל ביצועים גרועים בתמורה. GROUP BY מאפשר לך להשתמש בפונקציות מצטברות, כמו AVG, MAX, MIN, SUM ו-COUNT. DISTINCT רק מסיר כפילויות.