- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
'SELECT count(*) будет работать медленее чем 'SELECT * так как count() будет считать все ключи а * обратится в примари, и сразу получит значение.
время на выделение ресурсов вы в расчет не берете?
Не знаю что работает быстрее, но по крайней мере так элегантнее.
MOP1, да не будет count(*) лишние ключи проверять, просто товарищ спутал с каким-то другим случаем.
Ссори, с просони на ляпал ))
Для подсчета кол-ва строк используйте функцию COUNT(*), c указанием "звездочки" в качестве аргумента.
Есть таблица message: id | user_id | text
с индексом PRIMARY(id), INDEX(user_id)
Нам надо подсчитать сообщения пользователя с заданым $user_id
Сравним 2 запроса:
SELECT COUNT(*) FROM message WHERE user_id = $user_id
и
SELECT COUNT(id) FROM message WHERE user_id = $user_id
Оптимизация запросов в MySQL
если серия запросов затрагивает весь диапазон, то будет выгодно одним запросом, иначе даже 10 мелких могут быть быстрее одного ( ну конечно если там есть индекс по s1).
Да затрагивает весь... ~20 запросов. Что-то типа разделов (от-до). COUNT(*) установил, работать стал наглядно быстрее, хотя все равно разница с страницами без таких запросов велика. Индекса нет.
select sum( if(s1 >= 72 and s1 <= 89,1,0)) as s_72_89, sum(if (s1 >= 90 and s1 <= 95,1,0) as s_90_95
А как в таком случаи можно будет пользучить результат? (для вывода)
Оптимизация запросов в MySQL
Сенкс за ссылку, буду читать...
N1k, как и раньше в php, только там будет всего одна длинная строка значений в том порядке в котором указано в выражении.
Запросов много. Стоит такой код, но уже не справляется:
Говорят что через SELECT COUNT(*), в 10 раз быстрее~. Нашел в таком духе:
Но он не работает, вместо значения $result влезает "Array". 😒
Я, наверное, где-то накосячил?...
а попробуйте сделать так
$result1= @mysql_query("SELECT id FROM table WHERE ...);
$result=@mysql_num_rows($result1);
id - ключевое поле
Попробовал в одну сторочку через sum() вытянуть...
select sum( if(s1 >= 72 and s1 <= 89,1,0)) as s_72_89, sum(if (s1 >= 90 and s1 <= 95,1,0) as s_90_95
Значения (как я понял в виде после AS (s_72_89, ...), так получить и не удалось с обработкой (mysql_fetch_array, mysql_fetch_assoc, ...) и без. Хотя SQL ошибок и не выдала... (-
N1k, в мануале масса примеров . это рутина. а запрос отладьте без php сначала, а то вы все равно ошибки гасите через @
Борисович, нифига не так
как уже сказали,
count(*) считает по index, тоесть мускул сам кеширует количество записей
а SELECT * будет выбирать значение всех полей таблицы.