![]() |
# 11 |
חבר מתקדם
|
לא מחפשים סטרינג בעזרת LIKE, גם בטוח לא בשיטה השנייה ש SDF הציע שרק תסבך הכל כאן ולא תעזור הרבה. בישביל לחפש אחר ערך כלשהו בתור שדה שיש בו סטרינג המופרד בפסיקים אפשר להשתמש או ב explode ואז שימוש בשאילתה ב IN או ב CONCAT אחד מהשניים יעשה את העבודה.
|
![]() |
![]() |
# 13 |
חבר מתקדם
|
זה לא יותר יעיל. למה ששימוש ב JOIN כדי לבצע שאילתה על כמה טבלאות תיהיה יעילה יותר משמירת הנתונים כסטרינג בעמודה אחת בטבלה אחת ושליפת הנתונים בעזרת פקודות מובנות של SQL כמו IN ו CONCAT?!
|
![]() |
![]() |
# 14 |
חבר וותיק
|
???????
שמעת על המושג scalability? |
![]() |
![]() |
# 15 | |
חבר בקהילה
|
ציטוט:
כשאתה עושה join לפי מפתחות יש לך אינדקסים שמשפרים ביצועים. אתה גם מוזמן לראות איך מערכות גודולות עושות את זה, למשל wordpress: http://codex.wordpress.org/images/8/83/WP_27_dbsERD.png wp_term_relantionship מקשרת בין wp_term_taxanomy (קטגוריות) ל wp_posts. Last edited by SDF; 03-03-09 at 21:23.. סיבה: הוספת לינק |
|
![]() |
![]() |
# 16 |
חבר וותיק
|
ואדים
מה שהוא אמר יותר נכון גם לוגית כאשר יש לך 2 טבלאות ויש לך קשר של many to many רצוי ליצור relations table או יותר נכון צריך ליצור אחת כזאת שתהיה משהו כמו id | a_id | b_id ותפעיל 2 פונקצית אינדקסים פעם אחת לפי a_id, b_id פעם שניה הפוך ופעם שלישית לפי id אחרכך בעת שליפה פשוט תשחק עם הטבלאת יחסים ועם JOIN פשוט הכל בחוץ LIKE, CONCAT, IN וכד' לרוב מחייבים סריקה של כל הטבלה אתה לא מנצל את האינדקסים כשאתה עושה דבר כזה תחשוב לדוגמא כשאתה מחפש עם %something% זה מצריך סריקה של כל הטבלה.. וואדים הראש שלך בכלל בענניםן בנוגע ליעילות... SDF - כל הכבוד על הידע לא חשבתי שיש פה אנשים כמוני שמתעסקים ביעילות (;
__________________
![]() |
![]() |
![]() |
# 17 |
חבר וותיק
|
יעיל יעיל אבל לא נוח לעבודה.
אתה יכול לבנות את זה ככה אבל זה מסורבל. לא מדובר פה על דבר שמשפיע ברמה קריטית, כך שמה שאתם טוענים הוא קטנוניות שעולה בנוחיות. |
![]() |
![]() |
# 18 | |
חבר מתקדם
|
זה אומנם נכון, במקרים מסויימים שימוש בשיטה הזאת יכול לעזור. אבל מהניסין שלי (ואני די בטוח שזה הקריטריון החשוב ביותר כיום וניסיון זה לא משהו שחסר לי):
1. אני בטוח שהוא לא יריץ את הפקודה על טבלה עם 100,000 רשומות אלה הרבה פחות, שבמקרים כאלה הפקודות CONCAT ו IN יעבדו מספיק מהר (לא יודע אם יותר מהר השיטה הנוספות) אבל בהחלט משהו שהוא לא מורגש למשתמש. 2. שיטה זו היא לא משהו שמתכנת בסדר גודל של פותח האשכול מעוניין לעבוד איתו, אם הוא שואל שאלות כאלו. 3. אין ספק שימוש ב LIKE בהחלט יעשה סריקה לאורך כל הטבלה, אבל שוב ראו #1 ובנוסף אפשר בהחלט לכתוב את זה בצורה אופטימלית עם שימוש ב LIMIT או DISTINCT וכדומה, לא חסר. אז אומנם יש לכם תאוריה טובה, אבל תאוריה זה לא מה שמביא לכם את הלקוחות, העבודות הטובות והכסף ברוב המקרים. לא פעם ולא פעמיים כתבתי פונקציות לחיפוש, קישור פריטים אחד לשני ודברים נוספים אחרים שצורכים הרבה משאבים, וזה מה שאני למדתי מניסיון (מעשי!). ציטוט:
|
|
![]() |
![]() |
# 19 |
חבר וותיק
|
אני לא טיפוס שחצן, להפך
אולי הגזמתי קצת אבל אני עדיין חושב שזה דרך עבודה בסיסית להשתמש בטבלאות ריליישנס.. וזה תקף לכל מקום שבו צריכים את זה.. ואממ אני צריך לדבר איתך על משהו בנוסף, אני שולח לך הודעה ברגע זה בכל מקרה אני זזתי
__________________
![]() |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|