PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 7
retvizan Отправлено: 24 Февраля, 2014 - 13:37:07 • Тема: sql cвязи • Форум: SQL и Архитектура БД

Ответов: 20
Просмотров: 181
http://webew[dot]ru/posts/219[dot]webew
Понятное объяснение на руссском с примером как задавать связи на уже созданных таблицах.
retvizan Отправлено: 15 Февраля, 2014 - 13:12:05 • Тема: Запрос количества без лимита и с лимитом в одном запросе возможно ли? • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 125
Даже если мы не смогли переписать запрос (например, убрав джойны) и запускаем тот же запрос с count, то в любом случае отсутствие сортировки и возможность быстрого выполнения за счет
http://sqlinfo.ru/forum/viewtopic.php?pid=38342#p38342 пишет:

1. SQL_CALC_FOUND_ROWS работает так: считает количество строк, которое выведет этот запрос без LIMIT. Т.е. берет
первую строку, считает, берет вторую строку, считает, берет третью строку, считает, и т.д.

2. SELECT COUNT(*) подвержен некоторым оптимизациям. Например, в случае с MyISAM,
он сразу знает ответ. В случае с InnoDB он вынужден бежать по PK, но он никогда не
заглядывает в листья за данными.

3. Наконец, в самом худшем случае, когда и тот, и другой алгоритмы вынуждены просма-
тривать и считать строки, случай с COUNT(*) не требует передачи самих данных в считалку
(а COUNT_FOUND_ROWS требует, т.к. иначе не умеет).

По сути, COUNT(*) отдельно работает всегда не медленнее, чем вариант «в лоб».


Да, в приведенных вами условиях один запрос может быть быстрее, но что почти наверняка - очень спорно.

P.S. Имхо, основная проблема в том, что SQL_CALC_FOUND_ROWS считают оптимизацией и применяют не к месту. А это очень чревато. О чем собственно и было моё первое сообщение.
retvizan Отправлено: 15 Февраля, 2014 - 11:05:20 • Тема: Запрос количества без лимита и с лимитом в одном запросе возможно ли? • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 125
Мелкий пишет:
Но в сравнении "сделать один запрос с limit, а потом ещё раз, но с count", SQL_CALC_FOUND_ROWS может оказаться дешевле.
Ключевое слово здесь "может". Я поэтому и указывал на осторожность в его применении.

Мелкий пишет:
На развесистом запросе, возвращающем не так много записей - он почти наверняка окажется дешевле.
"почти наверняка" - действительности не соответствует. В ходе обсуждения по ссылке есть ряд аргументов, почему может быть иначе.
retvizan Отправлено: 14 Февраля, 2014 - 17:18:43 • Тема: Запрос количества без лимита и с лимитом в одном запросе возможно ли? • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 125
Tyoma5891 пишет:
а SELECT FOUND_ROWS() призван как раз для оптимизации сам по себе уже..
Ссылка как раз о том, что это заблуждение.

Именно его использование зачастую и ставит крест на возможности оптимизации запроса.
retvizan Отправлено: 14 Февраля, 2014 - 16:46:55 • Тема: Запрос количества без лимита и с лимитом в одном запросе возможно ли? • Форум: SQL и Архитектура БД

Ответов: 18
Просмотров: 125
Tyoma5891 пишет:
Посмотрите в сторону SELECT FOUND_ROWS()...

В эту сторону нужно смотреть с очень большой осторожностью.
http://sqlinfo[dot]ru/forum/viewtopic.php?id=6876
retvizan Отправлено: 30 Ноября, 2013 - 04:07:38 • Тема: Api mysql или PDO • Форум: Работа с СУБД

Ответов: 17
Просмотров: 3598
PHP: критика перехода с оригинального API MySQL на mysqli и PDO
retvizan Отправлено: 29 Ноября, 2013 - 03:22:05 • Тема: mysqli_connect Ошибка несуществующего пользователя • Форум: Администрирование БД

Ответов: 14
Просмотров: 6256
Рекомендую посмотреть статью MySQL error 1045


Цитата:
4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени. Например, вы создали пользователя ''@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB