За последние 24 часа нас посетили 17744 программиста и 1625 роботов. Сейчас ищут 1799 программистов ...

Корректный запрос?

Тема в разделе "PHP и базы данных", создана пользователем pioner7, 24 июн 2008.

  1. pioner7

    pioner7 Активный пользователь

    С нами с:
    28 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Привет всем гуру, подскажите насколько корректен такой запрос в базу?:

    $s = mysql_query("SELECT `id`, `name`, (SELECT `path` FROM `foto` WHERE `foto`.`id` = `username`.`id` ORDER BY `DATASORT` DESC LIMIT 1), (SELECT COUNT(*) FROM `foto` WHERE `foto`.`id` = `username`.`id` GROUP BY `ID` DESC LIMIT 1) FROM `username` WHERE `id` IN (1, 2, 3, 4, 5, 6, 195069, 200000, 9, 7);");

    суть запроса вытащить для каждого ID юзера путь к его последнему фото и посчитать количество его фоток. Запрос работает и выдаёт то, что надо. Но я не знаю как он поведет себя если будет больше 1 млн. юзеров. Может его можно как то оптимизировать или уже всё ок?
    Спасибо за внимание. :D
     
  2. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    Многое зависти от индексов
    Например в таблице `foto` `id` должно быть индексом как и DATASORT тоже желательно
    и т.д. тогда скорость выборки приблизится к максимальной

    но для 10^6 юзеров все таки наверное стоит создать таблицу где данная информация будет хранится в актуальном виде

    тоесть берем и создаем таблиц lastAndCountFoto
    uid int
    f_id int
    count_foto int

    где uid превичный ключ
     
  3. pioner7

    pioner7 Активный пользователь

    С нами с:
    28 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    т.е. при добавлении или удаление фотки апдейтить эту таблицу? и брать количество из неё?
     
  4. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0