有这样一张统计表:CREATE TABLE `sitems` (
`date` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '日期',
`key` varchar(255) NOT NULL DEFAULT '' COMMENT 'key',
`value` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'value',
`typeid` int(11) NOT NULL DEFAULT '-1',
UNIQUE KEY `date` (`date`,`key`,`typeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
慢查询日志:Count: 556 Time=3.51s (1950s) Lock=3.66s (2034s) Rows=0.0 (0), root[root]@2hosts
update `tb`.`sitems` SET `value` = `value` + N where `typeid` = N and `date` = 'S' and `key` = 'S'
更新一条语句要3秒钟,有好的优化方法吗?
`date` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '日期',
`key` varchar(255) NOT NULL DEFAULT '' COMMENT 'key',
`value` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'value',
`typeid` int(11) NOT NULL DEFAULT '-1',
UNIQUE KEY `date` (`date`,`key`,`typeid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
慢查询日志:Count: 556 Time=3.51s (1950s) Lock=3.66s (2034s) Rows=0.0 (0), root[root]@2hosts
update `tb`.`sitems` SET `value` = `value` + N where `typeid` = N and `date` = 'S' and `key` = 'S'
更新一条语句要3秒钟,有好的优化方法吗?
解决方案 »
- 怎么去除数据库里面的重复记录
- 求助,关于MYSQL
- 用mysql时 .frm文件复制后.......
- mysql load data 有错误?
- 初次安装的问题
- 关于postgresql的备份问题
- Host 'xxxxxx' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts' 怎么办
- mysql中,关于什么用户是超级用户的问题。
- Mysql里面用没有存储过程?
- mysql循环语句 添加一百万条测试数据
- mysql数据库连接池,线程池
- 如何在Select...From...Where內创建一个空列然后循环分配数个DATE
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+-------+---------------+------+---------+-------------------+------+-------+
| 1 | SIMPLE | sitems | const | date | date | 775 | const,const,const | 1 | |
+----+-------------+-------------+-------+---------------+------+---------+-------------------+------+-------+
1 row in set (0.00 sec)
show index+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| sitems | 0 | date | 1 | date | A | 631 | NULL | NULL | | BTREE | | |
| sitems | 0 | date | 2 | key | A | 21146 | NULL | NULL | | BTREE | | |
| sitems | 0 | date | 3 | typeid | A | 169168 | NULL | NULL | | BTREE | | |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (41.11 sec)
求教下,这个要怎么查,有什么工具吗?
这个表主要是update 操作,也只update `value`这个字段。 比如:update `tb`.`sitems` SET `value` = `value` + 1 where `typeid` = 10001 and `date` = '20150505' and `key` = 'daliy_online'
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| sitems | 0 | date | 1 | date | A | 631 | NULL | NULL | | BTREE | | |
| sitems | 0 | date | 2 | key | A | 21146 | NULL | NULL | | BTREE | | |
| sitems | 0 | date | 3 | typeid | A | 169168 | NULL | NULL | | BTREE | | |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
创建联合索引,尽可能要把过滤条件高的字段放在最前面,这样比较过滤更加快 。上面Cardinality这字段就是反应选择性高低,越大选择性就越好。Cardinality:就是字段值不同的行数。重新创建索引 顺序(typeid,key,date)