我有与mysql数据库有关的问题。我是 linux 网络服务器管理员,我面临 mysql 查询的问题。数据库非常小。我尝试在日志中进行跟踪,发现查询至少需要 5 秒才能响应。网站的第一页来自数据库。客户正在使用 cms。当服务器获得一定数量的命中时,数据库服务器开始非常缓慢地做出响应,等待时间从 5 秒增加到几秒。
我检查了慢查询日志
{
Query_time: 11.480138 Lock_time: 0.003837 Rows_sent: 921 Rows_examined: 3333
SET timestamp=1346656767;
SELECT `Tender`.`id`,
`Tender`.`department_id`,
`Tender`.`title_english`,
`Tender`.`content_english`,
`Tender`.`title_hindi`,
`Tender`.`content_hindi`,
`Tender`.`file_name`,
`Tender`.`start_publish`,
`Tender`.`end_publish`,
`Tender`.`publish`,
`Tender`.`status`,
`Tender`.`createdBy`,
`Tender`.`created`,
`Tender`.`modifyBy`,
`Tender`.`modified`
FROM `mcms_tenders` AS `Tender`
WHERE `Tender`.`department_id` IN ( 31, 33, 32, 30 );
}
日志中的每一行都是相同的,只是查询时间有差异。有没有办法调整性能?
更新:结果如下EXPLAIN
:
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | Tender | ALL | NULL | NULL | NULL | NULL | 3542 | Using where |
+----+-------------+--------+------+---------------+------+---------+------+------+-------------+
1 row in set, 1 warning (0.00 sec)
客户说他们正在使用索引,所以我运行命令来检查索引。
我得到以下输出。这是否意味着他们正在使用索引。
+--------------+------------+----------+--------- ----+-------------+------------+------------+------ ----+--------+------+------------+---------+ | 表 | 非唯一 | 键名 | Seq_in_index | 列名 | 整理 | 基数| 子部分 | 包装 | 空 | 索引类型 | 评论 | +--------------+------------+----------+--------- ----+-------------+------------+-------------+-- -----+--------+------+------------+---------+ | mcms_tenders | 0 | 初级 | 1 | 编号 | 一个 | 4264 | 空 | 空 | | BTREE | | +--------------+------------+----------+--------- ----+-------------+------------+-------------+-- -----+--------+------+------------+---------+