Помогите оптимизировать запрос

Тема в разделе "Базы данных", создана пользователем SocMaster, 27 янв 2014.

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

    SocMaster aka Hakerok

    Регистр.:
    26 июл 2011
    Сообщения:
    202
    Симпатии:
    47
    Есть 3 таких запроса
    Код:
            
    $fid = DB::fetch_first('SELECT * FROM '.DB::table('forum_thread')." WHERE tid=".$tid."");
            $fup = $fid['fid'];
            $fids = DB::fetch_first('SELECT * FROM '.DB::table('forum_forum')." WHERE fid=".$fup."");
            $fups = $fids['fup'];
            $names = DB::fetch_first('SELECT * FROM '.DB::table('forum_forum')." WHERE fid=".$fups."");
    В конце нужно только $names['name']
    Ладно первый запрос, а остальные 2?( Кажется мне что их можно в один засунуть? (не спрашивайте зачем 2:nezn: нужно, структура движка такая)
    Подскажите как оптимизировать:rolleyes:
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    А зачем их оптимизировать? Особенно два последних - запросы по первичному ключу ведь? Откуда информация, что требуется оптимизация? Тайминги-замеры где?
    p.s. Ещё не лишним в таких вопросах будет структуру таблицы приводить (SHOW CREATE TABLE `forum_thread`;)
     
  3. AutoRun

    AutoRun Создатель

    Регистр.:
    8 окт 2011
    Сообщения:
    22
    Симпатии:
    5
    может как-то так:
    Код:
    SELECT
        *
    FROM
        forum_forum,
    WHERE
        fid=(
            SELECT
                ff.`fup`
            FROM
                forum_forum ff,
                forum_thread ft
            WHERE
                ff.fid=ft.`fid`
              AND
                ft.tid=".$tid."
            )
     
  4. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    95
    Симпатии:
    39
    Для вопроса по оптимизации нужно смотреть Explain команду.
    Для того чтобы их засунуть в один, можно склеить джойном таблицы
    forum_thread и forum_forum или подзапросом делать, но первый вариент будет проще.
    Приведите структуры таблиц, либо дамп с демо данными...

    И уберите как минимум звездочки, и укажите конкретные поля в запросе!
     
  5. svfolder

    svfolder Постоялец

    Регистр.:
    31 июл 2013
    Сообщения:
    95
    Симпатии:
    39
    главное чтобы тут подзапрос на каждый кортеж не начал выполняться )
    При джойне оптимизатор может уловить ситуацию и более правильно оптимизировать нежели подзапрос...