תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

views הפקודה של mysql שתאיץ את האפליקציה שלך

מחבר:
בתאריך:

אחרי שבמדריכים הקודמים למדנו כיצד לצרף 2 טבלאות ויותר לשאילתה אחת באמצעות JOIN כדאי לדעת שהשימוש ב-JOIN הוא יקר מבחינת משאבים ולכן עלול להכביד על המערכת ולהאט את האפליקציה שעבדת עליה כל כך קשה. אחת האפשרויות לפתור את הבעיה הוא שימוש ב-view. במדריך זה נלמד מהו view, כיצד לכתוב אותו, מתי להשתמש בטכניקה וכיצד לשנות view אחרי שכתבנו אותו.

 

מה זה view?

View הוא שאילתה שאנחנו שומרים לשימוש בעתיד וגם טבלה וירטואלית. משתמשים ב-view כדי לפשט שאילתות מורכבות (דוגמת JOIN על מספר טבלאות).

 

שימוש ב-View כדי לפשט שאילתות מורכבות

במדריכים קודמים למדנו כיצד לצרף מספר טבלאות באמצעות JOIN. הבעיה היא ששאילתות JOIN, בדומה לשאילתות מורכבות אחרות, מכבידות על המערכת וגורמות לה להאט. בפרט במסדי נתונים גדולים או כשמצרפים מספר טבלאות. 3, 4 ואף יותר טבלאות.

לשם הדוגמה, נעבוד מול מסד נתונים הכולל 2 טבלאות, cars ו-workers:

CREATE TABLE IF NOT EXISTS `cars` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`model` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `cars` (`id`, `model`) VALUES
(1, 'Tesla'),
(2, 'Sussita');
CREATE TABLE IF NOT EXISTS `workers` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(25) DEFAULT NULL,
`salary` int(6) DEFAULT '0',
`cars_id` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `workers` (`id`, `name`, `salary`, `cars_id`) VALUES
(1, 'Moshe', 50000, 2),
(2, 'Yechezkel', 18000, NULL),
(3, 'Yirmiyahu', 12500, 1),
(4, 'Gershon', 15900, NULL),
(5, 'Asher', 13500, NULL);

נשתמש ב-JOIN כדי לקבל מידע מטבלות cars ו-workers ביחד באותה שאילתה:

SELECT w.id, w.name, w.salary, c.model
FROM workers AS w
JOIN cars AS c
ON c.id = w.cars_id

וכדי להפוך את השאילתה ל-view (לטבלה וירטואלית) נשתמש בתחביר:

CREATE VIEW [view_name] AS [השאילתה]

נחזור לדוגמה שלנו:

CREATE VIEW vw_workes_cars
AS
SELECT w.id, w.name, w.salary, c.model
FROM workers AS w
JOIN cars AS c
ON c.id = w.cars_id

אחרי שיצרנו את ה-view, אנחנו יכולים לראות אותו ברשימת ה-Views של מסד הנתונים:

מראה ה-view במסד נתונים mysql

 

איך לעבוד מול המידע המאוחסן ב-view?

ניתן לבצע שאילתה על ה-view כמו על טבלה רגילה:

SELECT * FROM vw_workes_cars

שני דברים שכדאי לשים אליהם לב:

  • התוצאה היא כמו JOIN אבל במחיר נמוך יותר מבחינת צריכת משאבי מערכת.
  • ה-view מתואם עם הטבלאות המקוריות. במידה ונשנה את המידע בטבלאות המקוריות ישתנה המידע גם בטבלת ה-view.

 

כיצד לשנות view?

אחרי שיצרנו את ה-view אנחנו יכולים לשנות אותו.

לעדכן:

UPDATE vw_workes_cars
SET
  name = 'Moris'
WHERE
  id=1;
  • זהירות, זה יעדכן גם הטבלה המקורית.

 

ניתן למחוק את כל ה-view:

DROP VIEW vw_workes_cars

המחיקה לא תשפיע על הטבלאות המקוריות.

לכל מדריכי ה- mySQL

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

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

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

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

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

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?