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

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");
 
есть конечно ... как минимум так из-за того что используется больше условий в выборке ( для объединения таблиц ) ... + при объединении фактически выбираются данные с 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
и по этому полю делать объединение записей

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