לעולם אל תאסוף מידע בצורה אחרת!
כשרוצים להציג מידע מתוך מסד נתונים, רוב האנשים עושים את הדבר הבא: <%
[פתיחת מסד הנתונים]
Do UNTIL EOF
FName=rs("first")
LName=rs("last")
Email=rs("email")
rs.MoveNext
.... עיבוד ועיצוב הנתונים בטבלאות וכו ....
Loop
[סגירת מסד הנתונים]
%>
נגיד שישנן 700 רשומות ו-3 עמודות, יש לנו 2,100 בקשות לקריאה ממסד הנתונים. הרבה מאוד טיולים במסד הנתונים... יותר נכון יהיה לכתוב את הקוד בצורה הבאה:
<%
[פתיחת מסד הנתונים]
myArray = rs.GetRows
rs.Close
Set rs = nothing
[סגירת מסד הנתונים]
NumOfCols = ubound(myArray,1)
NumOfRecords = ubound(myArray,2)
For i = 0 To NumOfRecords
FName = myArray(1,i)
LName = myArray(2,i)
Email = myArray(3,i)
.... עיבוד ועיצוב הנתונים בטבלאות וכו ....
Next
%>
העברה אחת ל-700 רשומות כפול 3 עמודות. אנחנו אף יכולים לסגור את אובייקט האוסף-רשומות (RecordSet) ואת הקישור (Connection) למסד הנתונים עוד לפני שאנחנו מתחילים לעצב, לחשב ולכתוב את הנתונים למסך.
בטח אתם שואלים את עצמכם, אם זוהי שיטה כל כך טובה, למה רוב האנשים לא משתמשים בה? שאלה טובה! התשובה היא: כי הם למדו לעבוד בשיטות אחרות (MoveNext, בטח...) אבל בואו נגיד ש-300 איש נכנסים לאתר שלי (הגיוני, לא?) ובכן, דפי הASP שלי קוראים נתונים ממסד הנתונים... אם לא הייתי משתמש בGetRows הייתי צריך מעבד חזק בשביל כל הבקשות של המידע ע"י הסקריפטים ושמירתו בזכרונות זמניים כדי לספק את השירות לכל הגולשים בו זמנית. כשמדובר בשרת, כל מילי-שניה שאתה מבזבז על סקריפט שכתוב בצורה לא נכונה יכול להיכפל בעשרות אלפי גולשים ולאבד זמן יקר בנסיונות הכושלים לקרוא שדות ולעבור רשומה רשומה.
שימו לב טוב איך הדוגמא שלי מאפשרת לסגור את RS ואת CN עוד לפני התהליכים על הנתונים שהוצאתי ממסד הנתונים. הקריאה עם GetRows לוקחת בסביבות 3/4 שניה והאובייקטים כבר סגורים ומסד הנתונים מסיר את כל המנעולים ומפנה אותו לקריאה הבאה. כל זמן העיצוב, אין הפרעה של גולשים על גולשים אחרים וזהו, רבותי, המצב האופטימלי!
עם GetRows אתם יכולים למתוח את הביצועים של מסדי הנתונים החלשים ביותר, למעלה - לשמיים.
כל מה שנותר לי להוסיף זה: "תנסו - ותראו"
|