为什么将此查询记录为slow_query?

时间:2013-12-04 14:25:45

标签: mysql indexing

我有以下数据库:

CREATE TABLE IF NOT EXISTS `musics` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `active` tinyint(1) NOT NULL DEFAULT '1',
  `slug` varchar(50) NOT NULL,
  `movie_id` int(11) NOT NULL,
  `added` int(11) NOT NULL,
  `updated` int(11) NOT NULL,
  `featured` tinyint(1) NOT NULL,
  `hits` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `slug` (`slug`),
  KEY `active` (`active`),
  KEY `featured` (`featured`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3339 ;

查询UPDATE musics SET hits = 7 WHERE id = '1770'会在音乐专辑的每个页面加载上运行。有没有办法优化这个查询?

2 个答案:

答案 0 :(得分:1)

示例..

set global long_query_time=1;

和my.cnf

[mysqld]
...
long_query_time=1;

你可以使用'explain'。

explain select * from musics where id = 1770; 

答案 1 :(得分:0)

像mysql文档一样说: “慢查询日志包含执行时间超过long_query_time秒的SQL语句” - > long_query_time是mysql的服务器系统变量,也可以更改。

到优化问题:

你可以写“= 1770”而不是'因为那是一个整数而不是一个字符串