SQL_MODE ?

pilot911

Новичок
SQL_MODE ?

имеется ответ от хостера

> Здравствуйте.
> Идет сильная нагрузка на cpu от mysql. Посещаемость сайта не огромная. Даже утром, сервер падает. Помогите разобраться, пожалуйста.

Проверьте сейчас нагрузку.
В подобных запросах
SELECT * FROM `bla` where `sss`=702 and `mod`=1 ORDER BY `view` desc limit 10;
необходимо заключать 702 в кавычки. Т.к. поле типа varchar().
Иначе индекс не используется.

это как-то связано с SQL_MODE ?
 

dimagolov

Новичок
так как поле текстовое (что с учетом значений само по себе странно) то да, каждая строка будет приводиться к числу и сравниваться с константой. это типа фича оптимизации мускля
 

pilot911

Новичок
спасибо, не знал

-~{}~ 19.04.10 02:21:

наверное, подобного замедления стоит ожидать и в случае, когда идет сравнение по целочисленному ключу, заключенному в кавычки, типа


SELECT * FROM `bla` where `id`> '702';

?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
imho к официальной доке по mysql надо писать вторую "стандарты, которые в mysql не работают"
сделать правильно просто по документации и ANSI невозможно

-~{}~ 19.04.10 01:48:

или при инсерте запишет неожиданное значение, или молча выйдет за пределы integer и данные пропадут, или создаст индекс в 2 раза большего объема, чем данные, или строку приведет к числу, или ...
 

pilot911

Новичок
при инсерте старается привести к типу поля, никогда не было проблем при вставке целочисленных данных, обернутых кавычками

про производительность селекта вопрос остается открытым
 

dimagolov

Новичок
pilot911, посмотри explain, но по идее должно приводить константу к числу.
 

Fortop

Новичок
pilot911
А такое абстрактное любопытство произрастающей из собственной лени :)

Есть возможность проверить этот же запрос, но в виде prepared statement с указанием типа параметра и без?

Если буде вдруг в последнем случае тоже использовался бы индекс, то это был бы контрольный в голову zerkms из этого топика http://phpclub.ru/talk/showthread.php?s=&threadid=118984 :D
 
Сверху