לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #4  
ישן 05-08-2010, 17:24
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,778
בתגובה להודעה מספר 3 שנכתבה על ידי KingYes שמתחילה ב "אני עשיתי חיפוש כבר על המילים..."

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

לכן אם יש לך שדה X ואתה מחפש את כל הרשומות שערכן 1 בשדה Y, האינדקס לא יעזור לך במאומה.

אגב, ניתן להגדיר יותר מאינדקס אחד בטבלה.

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

כמו כן, אם אתה מוסיף כמות גדולה של רשומות לטבלה שיש בה אינדקסים, רצוי לעשות זאת בתוך טראנזקציה (transaction) אחת. הסיבה לכך היא שאם לא משתמשים בטראנזקציה, על כל INSERT, יחושב האינדקס מחדש. לעומת זאת בטראנזקציה, תוכנסנה כל השורות, ובסגירת הטראינזקציה, יחושב האינדקס רק פעם אחת מחדש. הרבה יותר יעיל, לא?

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 05-08-2010, 18:20
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
תלוי מה אתה רוצה לקבל מהטבלה
בתגובה להודעה מספר 5 שנכתבה על ידי KingYes שמתחילה ב "אני לא הבנתי. יש ב-PMA, למטה..."

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

לדוגמא:

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


אז אם אתה שואל:
קוד:
SELECT first_name, last_name FROM employees WHERE id=325324


האינדקס יעזור למסד הנתונים למצוא מהר את פרטי העובד.

אבל אם תשאל:
קוד:
SELECT birth_date FROM employees WHERE first_name='King' AND last_name='Yes'

האינדקס לא יעשה כלום כי אין לו שום מידע על העמודות האחרות
ומסד הנתונים יאלץ לסרוק את כל הטבלה (לפחות 325324 שורות) כדי למצוא את תאריך יום ההולדת שלך.
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 05-08-2010, 18:45
צלמית המשתמש של המממ
  המממ המממ אינו מחובר  
 
חבר מתאריך: 30.10.01
הודעות: 8,699
Follow me...
לא הבנתי את השאלה שלך
בתגובה להודעה מספר 7 שנכתבה על ידי KingYes שמתחילה ב "את זה הבנתי. תודה רבה. ובקשר..."

אתה שואל אם count יעיל?
אם יש אינדקס מתאים אז לפעמים...

אתה שואל אם JOIN יעיל?
אם יש אינדקסים מתאימים אז לפעמים...

למה רק לפעמים? כי אולי אתה יכול לספק עוד נתונים לשאילתא ואז לקבל חיפוש טוב יותר...
או שעדיף בכלל לבצע את החלוקה לדפים עם פונקציית ה LIMIT שאתה מקבל מ MySQL
ואולי עדיף לשבור את הנירמול של הטבלאות ולהשתמש בטבלה אחת כדי לחסוך את ה JOIN הזה.

יש דרכים לבדוק ביצועים של שאילתות, קרא באתר של mySQL על EXPLAIN
http://dev.mysql.com/doc/refman/5.1...ng-explain.html
http://dev.mysql.com/doc/refman/5.1...ain-output.html

ולשאלה השלישית, תלוי מה אתה רוצה לספור
הנה דוגמא שעובדת:
קוד:
SELECT count(*), count (DISTINCT last_name) FROM employees
_____________________________________
_________________________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
אזהרה: משרד הבריאות קובע כי העישון מזיק לבריאות !
תראו, אפילו החייזר נהיה ירוק מזה


נערך לאחרונה ע"י המממ בתאריך 05-08-2010 בשעה 18:48.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 20:43

הדף נוצר ב 0.04 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר