אנא אפשר JavaScript כדי להשתמש בתכונות הנגישות תכונות נגישות של אתרים על ידי UserWay
top of page

SQL כללים לאופטומיזציה של שאילתות

Nissim Elaluf

עודכן: 24 בפבר׳ 2024




הי מה שלומכם (: חוזרים עם סדרת מאמרים קצרים של טיפים מעולים לגרום לשאילתות שלכם לטוס 🚀

יצא לכם לעבוד עם כמויות גדולות של נתונים ?

יצא לכם לעשות חיבור בין מספר גדול של טבלאות ? לפעמים רק בשביל לייבא עמודה אחת נוספת ?

היום נראה בקצרה אילו דברים משפיעים בצורה משמעותית על זמן הריצה וננסה להבין מדוע. מוכנים ? מתחיל !


כללים לאופטמיזציות של שאילתות

ישנם כמה דברים מבטיח לכתוב בקצרה

  1. לנסות להעביר את תנאי ה”Where” כמה שיותר מוקדם בתהליך, כך אפשר לעשות JOIN על טבלאות קטנות יותר

  2. לנסות להימנע משימוש בכמה וכמה Joinים בשאילתה אחת בייחוד כשמעורבות טבלאות גדולות

  3. ניתן להשתמש בUpdate  על בסיס טבלה אחרת בדרכלל כשמדובר בייבוא של עמודה אחת או 2 ולא של כמות גדולה של עמודות

זה מהיר יותר כי Update פשוט לוקח את ההתאמה הראשונה מהטבלה השניה ולא סורק בצורה מיותרת את כל הטבלה

בJoin רגיל אנו מחייבים את הDB לסרוק את מלוא הטבלה על מנת לזהות סיבות לJoin אפילו אחרי מציאת “התאמה”

אנסה לתת דוגמה מיד בהמשך:

  1. כמובן השיטה הבסיסית של הוספת אינדקס לעמודה עליה מתבססים בJoin

למשל בדוגמה הזו :

,,,



,,,

נראה סבבה אבל אם הטבלאות עצומות עם עשרות או מאות מליוני שורות ולא רק כמה עשרות אלפי שורות זה כבר מתחיל להיות כבד !

  1. אז דבר ראשון שהייתי ניגש לטפל בנושא זה כמו שכתבתי למעלה

 אם יש לי צורך רק בנתונים של 2012 (או כל פילטר קבוע אחר שאני מוסיף בטבעיות בסוף) אנסה להחיל אותו מוקדם יותר

ניתן ליצור טבלה זמנית # ולהזין לתוכה את ה Data מטבלת המקור אבל בתור התחלה רק 2 עמודות, ID + Date

למשל Sales2012#

עכשיו ניתן ליצור עוד טבלה זמנית שתכיל את כל השורות הנוספות שנצרכות לי

למשל ProductSold2012#

אותה נזין בנתונים עם שאילתת Insert Into על ידי Select  מטבלת B לעיל עם Join קליל ל Sales2012#  כA

הבעיה שעכשיו יש לי רק 4 עמודות

(

  1.  ID

  2.  DATE

  3.  Line Total

  4.  ProductId

כל השאר עמודת ריקות מלאות NULL

אותן נמלא על ידי שאילתות Update 😎

)

למשל אם נרצה למלא את ProductName  ב ProductSold2012#

 זה ייראה ככה :



וככה לנסות להזין עם עדכון את כל העמודות הנחוצות

במאמר הבא ארחיב על הדרך בה מנוע הSQL עובד ועל הסיבות הטכניות שבגינן אנו נדרשים לשנות מעט את צורת המחשבה שלנו בזמן כתיבת שאילתות על Data סטים גדולים …

וכמובן נרחיב גם על אינדקסים 😎

מקווה שקבילתם ערך 🙂

Comentários


bottom of page