הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   יעילות בטבלאות,איך? (https://hosts.co.il/forums/showthread.php?t=79496)

dabi 11-11-09 18:47

יעילות בטבלאות,איך?
 
יש לי מערכת מאמרים
יש לי לדוגמא 100 קטגוריות
ובכל קטגרויה יש לי 20 מאמרים
עכשיו אני רוצה להציג רק את המאמרים מהקטגוריה מספר 90 לדוגמא
אז זה צריך לעבור על 100*20 ולבדוק כל מאמר אם ה CATEGORY ID שווה ל 90
ואם תכפילו אם מספרים תגיעו למספרים מפחידים
יש דרך לייעל את זה?
תודה

Deagly 11-11-09 19:07

בשביל זה יש WHERE בשאילתות SQL..
קוד:

SELECT * FROM articles WHERE article_category=90
articles = הטבלה של המאמרים
article_category = שדה שמכיל את ה ID של הקטגוריה.

dabi 11-11-09 19:36

כמובן
אבל עדיין עם WHERE זה ירוץ על כמות אסטרונומית
ואם נגיד יש לי מיליון קטגוריות ואני צריך רק 1 המסד יקרוס
יש דרך לייעל את זה?

aviho1 11-11-09 20:14

הפתרון במקרה הזה הוא הגדרת אינדקס על השדה המבוקש.
כשאתה מגדיר index על שדה, mysql ימיין את הערכים בטבלה לפי השדה הזה, ויגדיר טבלה נפרדת של "סמניות" שיגדירו לmysql איפה להתחיל לחפש עבור רשומה מסויימת, לדוגמא אם יש לך בטבלה ערכים עם id של 1-1000 ממויינים בסדר עולה, ובטבלת סימניות יש id 500 ומיקום של הרשומה בטבלה, לכן כשתחפש id 600 למשל, mysql יתחיל לחפש מהרשומה ה500 ולא מ0.

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

intercooler3819 11-11-09 20:18

ציטוט:

נכתב במקור על ידי aviho1 (פרסם 745682)
הפתרון במקרה הזה הוא הגדרת אינדקס על השדה המבוקש.
כשאתה מגדיר index על שדה, mysql ימיין את הערכים בטבלה לפי השדה הזה, ויגדיר טבלה נפרדת של "סמניות" שיגדירו לmysql איפה להתחיל לחפש עבור רשומה מסויימת, לדוגמא אם יש לך בטבלה ערכים עם id של 1-1000 ממויינים בסדר עולה, ובטבלת סימניות יש id 500 ומיקום של הרשומה בטבלה, לכן כשתחפש id 600 למשל, mysql יתחיל לחפש מהרשומה ה500 ולא מ0.

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

זה בדיוק ככה

אל תשכח שהיעילות מתהפכת כשאתה מבצע יותר UPDATES מאשר SELECTS

dabi 13-11-09 01:36

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 745683)
זה בדיוק ככה

אל תשכח שהיעילות מתהפכת כשאתה מבצע יותר UPDATES מאשר SELECTS

לא הבנתי אותך
אשמח להסבר בבקשה,וכמובן תודה על התגובה


ציטוט:

נכתב במקור על ידי aviho1 (פרסם 745682)
הפתרון במקרה הזה הוא הגדרת אינדקס על השדה המבוקש.
כשאתה מגדיר index על שדה, mysql ימיין את הערכים בטבלה לפי השדה הזה, ויגדיר טבלה נפרדת של "סמניות" שיגדירו לmysql איפה להתחיל לחפש עבור רשומה מסויימת, לדוגמא אם יש לך בטבלה ערכים עם id של 1-1000 ממויינים בסדר עולה, ובטבלת סימניות יש id 500 ומיקום של הרשומה בטבלה, לכן כשתחפש id 600 למשל, mysql יתחיל לחפש מהרשומה ה500 ולא מ0.

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

אני יודע מה זה אנדקס,פשוט לא חשבתי שהוא עובד ככה, אני משתמש בו נגיד ל ID של משתמשים או ID של כתבות וכו'
אז הבנתי אני חושב

Labs 13-11-09 07:34

cache

dabi 13-11-09 07:38

ציטוט:

נכתב במקור על ידי Labs (פרסם 745818)
cache

אפשר בכמה מילים הסבר בבקשה?


כל הזמנים הם GMT +2. הזמן כעת הוא 16:15.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ