Нагрузка на БД при SELECT

Тема в разделе "Базы данных", создана пользователем yeaahhh, 31 июл 2011.

Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья, подскажите плз, есть ли существенная разница в нагрузке на БД между выборками из 1 таблицы и из 2?
    Пример выборки из 2х таблиц:
    PHP:
    mysql_query("SELECT ocenka.id_user, ocenka.login, ocenka.funny, users.login, users.origname, users.lastname, users.vozrast, users.city FROM ocenka,users WHERE ocenka.login = users.login order by funny desc limit 0,25");
     
  2. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    есть конечно ... как минимум так из-за того что используется больше условий в выборке ( для объединения таблиц ) ... + при объединении фактически выбираются данные с 1 таблицы а потом к ним цепляют данные с 2-й таблицы ... и все это в памяти крутицо-вертицо ... что снова же дает больше нагрузку ...

    но в большинстве случаев 1 большой запрос на объединение десятка таблиц работает в разы быстрее нежели выборка с 10 таблиц записей по отдельности а потом объединение их в каком-то ЯП ( к примеру в том же пхп )



    ну и объединение кошерней делать с конструкцией JOIN
    а не через where

    PHP:
    SELECT 
          ocenka
    .id_user
          
    ocenka.login
          
    ocenka.funny
          
    users.login
          
    users.origname
          
    users.lastname
          
    users.vozrast
          
    users.city 
    FROM ocenka

    LEFT JOIN  users  
       ON ocenka
    .login users.login 
    order by funny desc limit 0
    ,25
    и у вас БД неверно спроектирована
    есть избыточность поля login что создаст ненужную нагрузку и возможно даже потерю целостности всей структуры БД при редактированию данных

    в таблице ocenka нужно хранить ID с таблицы users
    и по этому полю делать объединение записей

    ну и это увеличит скорость так как делать сравнение по строкам намного сложнее чем по числу