За последние 24 часа нас посетили 17662 программиста и 1712 роботов. Сейчас ищут 1006 программистов ...

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

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

  1. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Вообщем такой вот вопрос, будет ли быстрее подсчитать COUNT(*) в запросе 1000000 записей или же взять просто последнюю запись с этим же ID (всм с тем же числом).. Просто последнее время замечаю, что нагрузка увеличивается при подсчете

    Код (Text):
    1. $sql = mysql_query("SELECT COUNT(*) FROM table");
    2. $num=mysql_result($sql, 0);
    или разница тысячные доли секунд? :D
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Invision
    а как насчет дырок в id? ты уже удаляешь записи тоже
     
  3. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    у меня последний id и количество записей не совпадают значений на ~300, база 7*10^5. если тебе ноль на массу эти тысячи при количестве в 1M, то можешь использовать
     
  4. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Тип таблиц какой. И интересует общий каунт по таблице или же с WHERE?
     
  5. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    без WHERE тип.. mysql использую:D ID не удаляю,, таблица вида:

    ---id_item---url---user_id---
    -----1-----site1.ru--42-------
    -----2-----test.ru--44-------
    -----3-----web.ru--31-------

    ну и записей прилично. хранится как лог и выводит сколько всего записей. + считает сколько чего юзер посетил по where user_id .. но это уже другая тема)
     
  6. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    бери последнюю
     
  7. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    коротко и ясно) спс так и сделаю
     
  8. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Если MyISAM, то SELECT COUNT(*) быстр.
    Там в заголовке таблицы это число лежит.
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Invision
    Создай 10000 строк, потом удали их, добавь одну и у неё ID будт 10001. Как думаешь, почему?
     
  10. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    так что пох
     
  11. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    всё равно я с недоверием отношусь к системам, которые как кисель растекаются... это хуже чем костыли
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попутал чтоли =) это обще никак не связанные вещи :D
     
  13. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    не дай мне бог потом такой код сопровождать(((
     
  14. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    незнаю , для меня всё просто - если дырок нет , то зачем считать ? )
     
  15. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    ну блин... попадётся под руки, скажут, что нужно, чтобы работало еще быстрее. прогнал записи, сунул под дистинкт, ага... у нас тут половина повторяется. вырезал все неуникальные и программа рассыпалась
    думайте и о тех, кто с вами будет работать плечем к плечу. если _обычные_ действия других программистов приводят к катастрофическим последствиям, кто не прав: вы (когда проектировали систему) или он (когда просто делал свою работу)?
     
  16. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    titch
    ну нет , вы , кажись , слишком уж заморачиваетесь в плане доведения любых проектов , а так же самого процесса до совершенства =)
    есть вероятность что автор даже до жизни свой процесс не доведёд , ещё маловероятней что он когда-то осознает и возьмётся переделывать то что можно было по-другому сделать и совсем ничтожная вероятность у того что хоть ктото его код будет смотреть , не то что бы работать над ним =) потому это совершенно не важно. автор не дурак и должен сам всё понимать , а если наоборот - то работать в этом направлении не судьба.
    Это как в соседней теме про загрузку картинок - вероятность что тот человек разрабатывает сайт на который когда-то хотя бы попытаются залить шелл меньше чем я увижу нло *:_:*
     
  17. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    а какой смысл писать проект рассчитанный на такую нагрузку, при этом который скорее всего не увидит свет? если уж заниматься оптимизацией, то начинать нужно не со спичечной, а со структурной. уже предлагали. критичны свойства, которые обеспечивают целостность базы и её внутренние свойства помогающие восстановлению - InnoDB, если нужна скорость шальная - MyISAM, если то, значит вот то...
    а рефакторить потом этот ГК... дешевле новый написать

    ценность программиста как профессионала не в том, сколько он кода написал, а в том, сколько за его код готовы платить. за код, в котором встречаются такие конструкции, лучше заплатить ровно столько, чтобы хватило на еду и книги
     
  18. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    у меня триггер где то валялся который id пересчитывает после удаления
     
  19. titch

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

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    актуально только для при условии корректно настроенных связей. да/нет?
     
  20. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    база слетит, восстановится и может конфуз выйти
    плюс к тому у меня подозрение что COUNT (*) не считает
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    мне тоже кажется, что он берет из метаданных
     
  22. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ну раз так , то тс"у логичней будет юзать COUNT =)
     
  23. Psih

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

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Что мешает кешировать выборку SELECT COUNT(*) FROM table на минуту-две?
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем вобще это нужно делать? :D
     
  25. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    автор хочет похвастаться тому сколько юзеров у него на сайте к примеру =)