我将android设备发送的时间戳和一些相关的用户数据存储在一个MySQL表中,其结构如下:
CREATE TABLE IF NOT EXISTS `breadcrumbs` (
`breadcrumbs_id` bigint(20) NOT NULL AUTO_INCREMENT,
`users_id` int(10) NOT NULL,
`timestamp` bigint(20) NOT NULL,
`data` text,
PRIMARY KEY (`breadcrumbs_id`,`users_id`),
KEY `fk_breadcrumbs_users1` (`users_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=468792 ;
android 设备以毫秒为单位发送时间戳,并遵循 UTC 时间标准来构建时间戳。我一直在尝试去除超过一个月的面包屑。由于 MySQL 没有毫秒格式,我一直在使用以下查询:
DELETE FROM breadcrumbs WHERE ((`timestamp`)/1000) < UNIX_TIMESTAMP() - 2592000;
删除记录需要相当长的时间。下面是运行删除查询的结果:
/*382,580 rows affected, 0 rows found. Duration for 1 query: 36.894 sec. */
我的问题是:
- 我是否正确拾取面包屑?
- 我可以优化
DELETE
查询,使其比当前运行得更快。