View Single Post
ישן 01-01-12, 01:00   # 10
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

החסרונות בפתרון שהצעת הן שהוא פחות יעיל ופחות אמין מאשר last_insert_id, במידה ומדובר על אתר עמוס זה יכול להיות משמעותי.

במקום להשתמש ב- ORDER BY id DESC LIMIT 1 בד"כ עדיף לממש את זה עם- (SELECT MAX(id (באמצעות תכנון ואינדקסים מתאימים ניתן לקבל שיפור די משמעותי),
את ה- WHERE רצוי להשאיר עבור האמינות של התוצאה אבל אסור להתעלם מהעובדה שזה דורש עבודה נוספת מהמנוע ובעצם צורך יותר משאבים וזמן שאפשר לחסוך.

לעומת זאת אם נשתמש ב- last_insert_id -
לדעתי זה יותר נוח ופשוט למימוש ומבחינת עובדות זה גם יותר בטוח ויותר יעיל,
אין ספק שזאת בחירה טובה יותר ועדיף לבחור בה כשאפשר.

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

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

זה שלא הכרת זה בסדר גמור, אבל עכשיו כשאתה מכיר - בוא ניתן לו את הפתרון האידיאלי.

עריכה:
הניסוח של "מתאימים" יותר מתאים עכשיו, בכל מקרה בוא ניתן את הפתרון האידיאלי .

Last edited by אדיר; 01-01-12 at 01:08..
  Reply With Quote