У меня есть простые пользователи таблицы:MYSQL: быстрее выполнить запрос на обновление?
userID | credits | name | etc | etc1 | etc2
я сделать простой запрос:
UPDATE users set credits = (credits - 10) where userid = 9
Эта таблица содержит 2000 строк. Почему этот запрос занимает 0,16 секунды и как я могу сделать это быстрее?
userid является основным ключом и поэтому уже имеет индекс на нем. Поэтому я не могу понять, почему этот запрос может быть медленным. Особенно, поскольку это ТОЛЬКО запрос, выполняемый, ONCE, на сервере с 16 ГБ ОЗУ и процессором-убийцей. На сервере буквально нет ничего, что могло бы затормозить любые ресурсы.
Любые идеи?
EDIT
Это, как я время это:
private function slowQueryEvaluator($startTime, $endTime, $identifier) {
$MAX_TIME = 0.1;
$IP = Controller::getRealIpAddress();
$userID = -1;
if (isset(YII::app()->user->id)) {
$userID = YII::app()->user->id;
}
$seconds = $endTime - $startTime;
if ($seconds > $MAX_TIME) {
YII::log($IP.' - '.$userID.' - '.$seconds.' seconds - '.$identifier);
}
}
кредитов является INT.
А вот экспорт из создания таблицы пользователей:
CREATE TABLE IF NOT EXISTS `users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`cell_nr` varchar(12) NOT NULL,
`status` varchar(20) NOT NULL DEFAULT 'INACTIVE',
`full_name` varchar(255) NOT NULL,
`public_name` varchar(20) NOT NULL,
`credits` int(11) NOT NULL DEFAULT '0',
`national_id` varchar(20) NOT NULL,
`email_address` varchar(255) NOT NULL,
`OTP` int(5) NOT NULL,
`OTP_count` int(11) NOT NULL DEFAULT '0',
`password` char(32) NOT NULL,
`created` int(11) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Какой тип данных является «кредитами»? – Barmar
Ни в коем случае это не так долго. Вы управляете командой непосредственно с консоли? – panupan
Сообщить о движке вашего стола и создать инструкцию. Или свяжитесь со своим любимым гадателем. –