【发布时间】:2011-02-07 07:37:45
【问题描述】:
我在 webfaction 上使用 django,我收到了“MySql 查询耗时过长”的消息, sql是
SELECT (1) AS `a` FROM `main_userprofile` WHERE `main_userprofile`.`id` = 98这是一个比较简单的sql,为什么查询时间太长了?
这里是“创建表”:
main_userprofile |创建表`main_userprofile`( `id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL, `sex` smallint(6) NOT NULL, `active_number` varchar(64) NOT NULL, `phone_number` varchar(32) NOT NULL, `work_number` varchar(32) NOT NULL, ... ... 主键(`id`), 唯一键`user_id`(`user_id`) ) 引擎=MyISAM AUTO_INCREMENT=1652 默认字符集=utf8 |id 是主键
解释:
解释 SELECT (1) AS `a` FROM `main_userprofile` WHERE `main_userprofile`.`id` = 98; +----+-------------+------------------+--------+--- ------------+---------+---------+--------+------+-- ------------+ |编号 |选择类型 |表|类型 |可能的键 |关键 | key_len |参考 |行 |额外 | +----+-------------+------------------+--------+--- ------------+---------+---------+--------+------+-- ------------+ | 1 |简单 | main_userprofile |常量 |初级 |初级 | 4 |常量 | 1 |使用索引 | +----+-------------+------------------+--------+--- ------------+---------+---------+--------+------+-- ------------+【问题讨论】:
-
运行查询时 EXPLAIN PLAN 会告诉您什么?
-
尝试用mysqlcheck检查表(dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html)