PHP/MySQL | Как зделать вывод количества юзеров?
Цитата: чтобы зарабатывать балы лучше быть тупым и финтазировать как олень.
Автор цитат: https://bymas.ru/modules/user/images/icons/male_icon.png Вилы Выкидные
Автор цитат: https://bymas.ru/modules/user/images/icons/male_icon.png Вилы Выкидные
System (10.02.2021 в 13:25)
In MySQL InnoDB, SELECT COUNT(id) WHERE secondary_index = ? is an expensive operation and when the user has a lot of messages, this query might take a long time. Even when using an index, the engine still needs to count all matching records. The performance will degrade with growing total message count.On the other hand, SELECT MAX(id) WHERE secondary_index = ? can deliver the highest id in that index in almost constant time by doing a simple drilldown in the B-Tree structure of the index.If you want to understand why, consider looking up how the B+Tree data structure works, which is used by InnoDB to structure the rows of your tables and indexes.I suggest you go with SELECT MAX(id), if the requirement is only to check if there are new messages (and not the count of them).Also, if you rely on the message count you might open a gap for race conditions. What if the user deletes a message and receives a new one between two polling intervals?
In MySQL InnoDB, SELECT COUNT(id) WHERE secondary_index = ? is an expensive operation and when the user has a lot of messages, this query might take a long time. Even when using an index, the engine still needs to count all matching records. The performance will degrade with growing total message count.On the other hand, SELECT MAX(id) WHERE secondary_index = ? can deliver the highest id in that index in almost constant time by doing a simple drilldown in the B-Tree structure of the index.If you want to understand why, consider looking up how the B+Tree data structure works, which is used by InnoDB to structure the rows of your tables and indexes.I suggest you go with SELECT MAX(id), if the requirement is only to check if there are new messages (and not the count of them).Also, if you rely on the message count you might open a gap for race conditions. What if the user deletes a message and receives a new one between two polling intervals?
так а нахера ты WHERE воткнул, ты делаешь поиск по неиндексируемому столбцу, ТЫ ДЕЛАЕШЬ ПОИСК ПО УСЛОВИЮ, А НЕ ВЫВОД макимального значения индексируемого столбца

Вилы Выкидные (10.02.2021 в 13:28)
скрин мне дай, где там у тебя в каких доках индексируемый max(`id`) циклом ищется
скрин мне дай, где там у тебя в каких доках индексируемый max(`id`) циклом ищется

https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html вот MAX функция и там написано и даже линк есть то как mysql использует индекс
Вот https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html
System (10.02.2021 в 13:28)
Ситуация когда так сделали, ломает твою логику функции MAX, но если так сделают в реальности логика не сломается потому что будет реальный поиск данных только не по всей таблице а по дереву, что значительно быстрее и цикл там используется. Учи алгоритмы )
Ситуация когда так сделали, ломает твою логику функции MAX, но если так сделают в реальности логика не сломается потому что будет реальный поиск данных только не по всей таблице а по дереву, что значительно быстрее и цикл там используется. Учи алгоритмы )
вот твоя ахинея
select max(`id`) from users where name = Вася
Вася - это id 5, мы получим 5, в таблице 10 записей, где ты тут получил id 10 по MAX?
ой Вася, спор ради спора, узнаю бумас

System (10.02.2021 в 13:32)
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html вот MAX функция и там написано и даже линк есть то как mysql использует индексВот https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html вот MAX функция и там написано и даже линк есть то как mysql использует индексВот https://dev.mysql.com/doc/refman/8.0/en/mysql-indexes.html
скрин, где написано, что индексируемый max(`id`) получается циклом, на скрине выдели пояснение про цикл
Вилы Выкидные (10.02.2021 в 13:33)
вот твоя ахинеяselect max(`id`) from users where name = ВасяВася - это id 5, мы получим 5, в таблице 10 записей, где ты тут получил id 10 по MAX?ой Вася, спор ради спора, узнаю бумас
вот твоя ахинеяselect max(`id`) from users where name = ВасяВася - это id 5, мы получим 5, в таблице 10 записей, где ты тут получил id 10 по MAX?ой Вася, спор ради спора, узнаю бумас

Я тебе говорю про конкретно работу MAX а не where ты можешь его убрать и будет тот-же результат в плане логики работы, ты вообще его можешь перенести в WHERE number > MAX(id) я тебе говорю про работу функции
Вилы Выкидные (10.02.2021 в 13:35)
скрин, где написано, что индексируемый max(`id`) получается циклом, на скрине выдели пояснение про цикл
скрин, где написано, что индексируемый max(`id`) получается циклом, на скрине выдели пояснение про цикл
Цикл используется для поиска по дереву индекса дурень

Вот тебе алгоритм - https://habr.com/ru/post/337594/
Вилы Выкидные, тебе уже сказfли древо это цикл который работает быстрее чем стандартны while
ЯнеЛохматый (10.02.2021 в 13:38)
Вилы Выкидные, тебе уже сказfли древо это цикл который работает быстрее чем стандартны while
Вилы Выкидные, тебе уже сказfли древо это цикл который работает быстрее чем стандартны while
Тоже бред, можно и через while сделать, суть в самом цикле а не в том какой из разновидностей юзать, хоть do-while)
System (10.02.2021 в 13:36)
Я тебе говорю про конкретно работу MAX а не where ты можешь его убрать и будет тот-же результат в плане логики работы, ты вообще его можешь перенести в WHERE number > MAX(id) я тебе говорю про работу функции
Я тебе говорю про конкретно работу MAX а не where ты можешь его убрать и будет тот-же результат в плане логики работы, ты вообще его можешь перенести в WHERE number > MAX(id) я тебе говорю про работу функции
select max(`id`) from users
всё, никаких циклов и условий
