За последние 24 часа нас посетили 17637 программистов и 1649 роботов. Сейчас ищут 909 программистов ...

Вместо подсчета всех строк взять последний ID? Быстрее?)

Тема в разделе "PHP для новичков", создана пользователем Invision, 2 мар 2011.

  1. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Ещё для вывода постраничной навигации нужно.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    siiXth
    ну это довольно быстро сосчитается! :D Можно не морочиться спичечной оптимизацией
     
  3. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    igordata
    Ага, быстро. Щаз. В InnoDB какраз таки не быстро. Таблица на 1 млрд записей, объём 500 мегов. Время подсчёта порядка полутра минуты. Правда под нагрузкой, но всё же.

    InnoDB в статистике хранит примерное кол-во записей, COUNT(*) считает точное. Это Full table scan. Так что имейте ввиду, это какраз тот вариант, когда с ростом данных оно начинает заметно тормозить. Выходя на десятки миллионов оно вообще капец может начать подлагивать.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Psih
    тебе нужно на каждой странице заново все пересчитывать?

    я сказал про людей онлайн
     
  5. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    блин , а ведь реально с такой пустышки такую тему развели :D
    *запасся попкорном*
    давайте теперь решим раз и навсегда что лучше COUNT()'a и есть ли оно , а то вариантов много =))
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    надо сравнить с num_rows и не парится. Имхо лучше действовать встроенными возможностями
     
  7. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Просто в MySQL, в отличии от прочих серверов, есть разные storage engine, и есть различия в их работе. А COUNT(*) часто используется и частенько бывает тем местом, которое вызывает сложности с нагрузкой.

    Так что есть что обсудить.

    Нечего обсуждать в теме "SELECT * FROM table WHERE field = 1 - нужен индекс или нет?" :D