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 כוכבים

 

 

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

 

= 8 + 8