Ответы пользователя по тегу Базы данных
  • Как работают представления в MySQL?

    finnish
    @finnish
    Представление, это как подготовленный заранее шаблон запроса. Выполняя поиск по какому-то представлению, Вы на самом деле лишь дописываете к этому шаблону свои условия.

    Вот простой пример представления (назовём его `users_online`), которое показывает пользователей, проявлявших активность в течении последних 15 минут:
    SELECT * 
    FROM `users`    AS `u` 
    JOIN `activity` AS `a` 
    ON   `a`.`user_id`   = `u`.`id` 
    AND  `a`.`modified` >= CURRENT_TIMESTAMP - INTERVAL 15 MINUTE;

    При выборе онлайн-пользователей старше 18 лет, Ваш запрос будет скорее всего примерно такой:
    SELECT * FROM `users_online` WHERE `age` > 18;

    Что для базы данных равноценно:
    SELECT * FROM (
        SELECT * 
        FROM `users`    AS `u` 
        JOIN `activity` AS `a` 
        ON   `a`.`user_id`   = `u`.`id` 
        AND  `a`.`modified` >= CURRENT_TIMESTAMP - INTERVAL 15 MINUTE
    ) AS `users_online` 
    WHERE `age` > 18;

    В каждом конкретном случае база данных может оптимизировать запрос, и результирующим может оказаться нечто иное, но смысл от этого не меняется и описан в первом предложении моего комментария. Например, более простое представление:
    SELECT * FROM `users` WHERE `online` = 1;
    ... с Вашими условиями превратится в:
    SELECT * FROM `users` WHERE `online` = 1 AND `age` > 18;
    Ответ написан
    5 комментариев