ABA


"איך לשפר מהירות חיפוש בבסיס נתונים ?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6349 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6349
ppl4peace

   09:38   18.06.03   
אל הפורום  
  איך לשפר מהירות חיפוש בבסיס נתונים ?  
 
  
למישהו יש רעיון איך להאיץ מהירות חיפוש בבסיס נתונים ?
יש לי 10,000,000 רשומות בבסיס נתונים של SQL SERVER,הוספתי אינדקס ומפתח,החיפוש לוקח המון זמן,אני בטוח שיש דרך לייעל אותו אני רק לא יודע איך,אולי HASH TABLE או משהו כזה,איך מיישמים את זה ?
אני עובד עם #C מול SQL SERVER אבל השפה לא חשובה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  חיפושים יעילים אני מכיר dryice 18.06.03 10:43 1
     איזה שיטת אירגון אתה משתמש ?? nesher  18.06.03 10:50 2
         תודה לכם,שיטת האירגון מוכתבת לי על יד השרת ppl4peace 18.06.03 11:08 3
             אתה יכול לבנות Hash Table dryice 18.06.03 11:17 4
  לא נתת מספיק פרטים אבל כעיקרון: adiadi 18.06.03 15:55 5
     הבנתי,רעין מצויין,תודה ppl4peace 18.06.03 21:08 6

       
dryice

   10:43   18.06.03   
אל הפורום  
  1. חיפושים יעילים אני מכיר  
בתגובה להודעה מספר 0
 
   בעזרת כל מיני מבני נתונים יעילים(כמו Hash Table למשל),
אבל אין לי שום ניסיון עם SQL.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nesher 

   10:50   18.06.03   
אל הפורום  
  2. איזה שיטת אירגון אתה משתמש ??  
בתגובה להודעה מספר 1
 
   אני יכול לתת לך מספר דוגמאות
אתה יכול להשתמש בהתמרה ישירה או ע"י חישוב (HASH)
אתה יכול להשתמש בקובץ סדרתי או אירגון ישיר אינדקס סידרתי וכו'....

היה לי על זה מבחן בגרות ואני שונא את החומר

אם אתה צריך פירוט על אחת משיטות האירגון אתה יכול לבקש
אהה, אבל אני לא בטוח שהכל נתמך ע"י SQL
אבל אני חושב שכן, לדעתי זה נתמך ע"י כל שפה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ppl4peace

   11:08   18.06.03   
אל הפורום  
  3. תודה לכם,שיטת האירגון מוכתבת לי על יד השרת  
בתגובה להודעה מספר 2
 
   אבל אולי אני יכול לפצל את הdatabase ולקבוע בעזרת ה hash table לאיזה חלק לגשת.
מערך דו מימדי של שמות כשלכל שם צמוד הdatabase שבו הוא מאוכסן זה hash table?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

   11:17   18.06.03   
אל הפורום  
  4. אתה יכול לבנות Hash Table  
בתגובה להודעה מספר 3
 
   אצלך בתוכנית, שתשמור חלקים מהDATABASE בשביל לייעל
את החיפוש. צריך אבל קצת הרבה יותר מידע, על מה זה הDATA
ואיך הוא מסודר בשרת, בשביל להבין איך לעשות את זה נכון.

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
adiadi

   15:55   18.06.03   
אל הפורום  
  5. לא נתת מספיק פרטים אבל כעיקרון:  
בתגובה להודעה מספר 0
 
  

יש לך בוודאי איזשהו key ייחודי לכל רשומה. זה לא חייב להיות דשה ספציפי, אלא אפילו סט של שדות ברשומה שעושים אותה ייחודית.

נניח שיש לך DB המכיל שמות אנשים, סוג הרכב שלהם ומספר הק"מ שעשו (דוגמא מעאפנית אבל זה מה שיצא לי).

נניח (ואני יודע שאפשר לסתור את זה, אבל רק נניח) ששמות יכולים לחזור על עצמם, כמו גם סוגי הרכב והקילומטראז', אבל אין אף סוג של רכב שיש לו אותו ק"מ. אז המפתח שלך הוא גם הק"מ וגם סוג הרכב (נניח שסוג הרכב זה מספר רץ בין 1 ל-9).

אתה יכול להוסיף שדה לרשומות שלך שיקרא key (או בלעדיו, רק ככה נוח לי להסביר), והוא יכיל פוונקציה הבאה : מס' הק"מ כפול 10 , פלוס מס' סוג הרכב.

כך תמיד תקבל מספר ייחודי. כעת שאילת חיפוש עבור מס' רכב וק"מ ייחודיים יעשו כך: נניח שהיוזר מחפש רכב שעשה 10,012 ק"מ מרכב מסוג 4. חישבת מיידית שהמספר הוא 100,124 (בטוח שאין אף אחד כזה במערכת שלך). בהנחה שבעת הכנסת כל רשומה ביצעת מיון לפי המפתח הזה, בצע שאילתה פשוטה לחיפוש הרשומה לפי המספר שקיבלת מהחישוב. למעשה זה ב- (O(1 (או תלוי בשאילתה ייתכן ו - nlog*n אבל לא יותר גרוע מזה ובוודאי לא O של N !)

מקווה שהבנת מההסבר הזה את המימוש (ובאמת לא משנה באיזו שפה). ואני ממליץ על החישובים האלה להעשות משפת התיכנות ולא באמצעות SQL כי זה יהיה הרבה יותר יעיל (כמובן אם זה ניתן באפליקציה הספציפית שלך).




                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ppl4peace

   21:08   18.06.03   
אל הפורום  
  6. הבנתי,רעין מצויין,תודה  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net