dr.nomore
15.12.2013 - 15:24
Все работало пока в порядке эксперимента решил попробовать не имеющие особого смысла сравнения, и немедленно получил отлуп:
Цитата |
real_query error #1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '> "стол" limit 0' at line 1 select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` <> "стол" limit 0; |
Чтобы было виднее, вот запрос из цитаты, в котором якобы синтакс еррор
select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` <> "стол" limit 0;
Запускаю РМА. То же самое. При чем ругается уже на его автоматически влезающий ORDER BY, by почему по по полю которое ни разу не pk.
Ладно, пробился в консоль (что требует усилий, поскольку забываю как это делается). Консоль спокойно все обрабатывает, с любыми сравнениями:
mysql> select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` > "стол" limit 0;
Empty set (0.00 sec)
mysql> select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` > "стол" limit 0;
Empty set (0.00 sec)
mysql> select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` <> "стол" limit 0;
Empty set (0.00 sec)
mysql> select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` <> "стол" limit 10;
+------+----------------------------------------------+----------------------------+-------+-------- +------+
| iden | name | size | price | parent | sort |
+------+----------------------------------------------+----------------------------+-------+-------- +------+
// поскипано
+------+----------------------------------------------+----------------------------+-------+-------- +------+
10 rows in set (0.00 sec)
mysql>
Что это может значить?
UPD: это значит я тупой. См. ниже
dr.nomore
15.12.2013 - 15:28
Про Денвер. У меня денвер. Я ставил другие сюиты - эквмпенисуальное г , даже еше похуже. Разобраться с апачами все недосуг. Но может быть пришла пора? Это ж явно оптимизатор глючит, или на самом деле у меня синтакс еррор?
sergeiss
15.12.2013 - 15:46
"стол" в одинарные кавычки не пробовал ставить?
И второй вопрос - а какой смысл от "limit 0"???
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
dr.nomore
15.12.2013 - 15:53
Попробовал. Те же яйца, вид тот же.
dr.nomore
15.12.2013 - 15:56
Ладно, чем отличается то что было
select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`name` <> "стол" limit 0;
от этого?
select SQL_CALC_FOUND_ROWS * from `Продукт` where `Продукт`.`Название` <> "ANDE" limit 0;
второе РМА обрабатывает, а майскля - нет. В консоли все как обычно.
dr.nomore
15.12.2013 - 15:57
На второй вопрос. Ну там же ответ в начале запроса.
T1grOK
15.12.2013 - 16:15
SQL_CALC_FOUND_ROWS
Не ленитесь делать дополнительный запрос на подсчет количества строк, в большинстве случаев это эффективнее.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
dr.nomore
15.12.2013 - 16:57
Упс, это я ....тый. Лыжи тут не при чем. РМА, конечно, вообще глюк голимый. Короче догадался я заглянуть в коды:
select SQL_CALC_FOUND_ROWS * from `catalog_sub` where `catalog_sub`.`iden` & gt; 9 limit 0, 0;
Вот так. На входе запроса (get) же типично стоит санация, она по-быстрому все эти уголовые скобки и сконвертила При этом они так и остаются уголовыми при выводе в браузер, в смысле с витрины.
PS В цитате пробел между амперсандом и мнемоникой, потому что и скрипт форума конвертит в скобку.
vagrand
15.12.2013 - 16:59
T1grOK
Цитата |
Не ленитесь делать дополнительный запрос на подсчет количества строк, в большинстве случаев это эффективнее. |
Это с какой такой радости?
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
dr.nomore
15.12.2013 - 17:06
Цитата (T1grOK @ 15.12.2013 - 16:15) |
SQL_CALC_FOUND_ROWS Не ленитесь делать дополнительный запрос на подсчет количества строк, в большинстве случаев это эффективнее. |
Щито?
Это оно и ест - подсчет количества строк. Просто мне не нужны данные на этом этапе, потому что еще предстоит узнать сколько этих данных потребуется. Откуда и limit 0.
dr.nomore
15.12.2013 - 17:07
На самом деле без требований получить данные запросы проходят мгновенно. Я не замерял, но по ощущениям вместо одного обычного можно запузырить штук пять пустых за то же время.
dr.nomore
15.12.2013 - 17:09
Да, и в рамках mysqli для этого юзать надо real_query().
glock18
15.12.2013 - 17:24
Цитата (vagrand @ 15.12.2013 - 12:59) |
T1grOK
Цитата | Не ленитесь делать дополнительный запрос на подсчет количества строк, в большинстве случаев это эффективнее. |
Это с какой такой радости?
|
Встречный вопрос: а что mysql исправил свое дико багнутое поведение SQL_CALC_FOUND_ROWS? Если нет, то почти всегда использование SQL_CALC_FOUND_ROWS не лучше, чем дополнительный запрос с count'ом. Если исправили, то линк, пожалуйста, на changelog или что-то указывающее на это.
glock18
15.12.2013 - 17:25
Цитата (dr.nomore @ 15.12.2013 - 13:07) |
На самом деле без требований получить данные запросы проходят мгновенно. Я не замерял, но по ощущениям вместо одного обычного можно запузырить штук пять пустых за то же время. |
На таблицах каких размеров пробовали?
T1grOK
15.12.2013 - 19:25
Цитата (vagrand @ 15.12.2013 - 12:59) |
T1grOK Цитата Не ленитесь делать дополнительный запрос на подсчет количества строк, в большинстве случаев это эффективнее.
Это с какой такой радости? |
Книги умные надо читать. Все мои утверждения подкреплены личным опытом, статьями или книгами. В данном случае книгами.
P.S. Собственно glock18 уже намекнул, что с SQL_CALC_FOUND_ROWS не все так гладко в Mysql.
_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.