Mysql 我不知道你的真实情况。您希望保留多少个月?该表将保留过去4个月的数据。cron将在每个月底运行此查询。当然,我不知道在一个月结束时,表中会有多少记录,200万?300万?好的,那么您将每月删除一次,数据库中存在的总共5个月中的1个月。在这种情况下,索引会很
Mysql 我不知道你的真实情况。您希望保留多少个月?该表将保留过去4个月的数据。cron将在每个月底运行此查询。当然,我不知道在一个月结束时,表中会有多少记录,200万?300万?好的,那么您将每月删除一次,数据库中存在的总共5个月中的1个月。在这种情况下,索引会很,mysql,sql,Mysql,Sql,我不知道你的真实情况。您希望保留多少个月?该表将保留过去4个月的数据。cron将在每个月底运行此查询。当然,我不知道在一个月结束时,表中会有多少记录,200万?300万?好的,那么您将每月删除一次,数据库中存在的总共5个月中的1个月。在这种情况下,索引会很有用。检查这个链接,我相信它会给你一些想法:我添加索引的原因是因为这个查询将每月执行一次。你是说索引是不必要的吗?。(我不是在评判你,我只是好奇)这要看情况而定。在目前的情况下,不是这样。(甚至会使性能恶化)。但对于你的实际情况,我不知道。您希
我不知道你的真实情况。您希望保留多少个月?该表将保留过去4个月的数据。cron将在每个月底运行此查询。当然,我不知道在一个月结束时,表中会有多少记录,200万?300万?好的,那么您将每月删除一次,数据库中存在的总共5个月中的1个月。在这种情况下,索引会很有用。检查这个链接,我相信它会给你一些想法:我添加索引的原因是因为这个查询将每月执行一次。你是说索引是不必要的吗?。(我不是在评判你,我只是好奇)这要看情况而定。在目前的情况下,不是这样。(甚至会使性能恶化)。但对于你的实际情况,我不知道。您希望保留多少个月?该表将保留过去4个月的数据。cron将在每个月底运行此查询。当然,我不知道在一个月结束时,表中会有多少记录,200万?300万?好的,那么您将每月删除一次,数据库中存在的总共5个月中的1个月。在这种情况下,索引将非常有用。请检查此链接,我相信它将为您提供一些想法:
mysql> create index idx_logs_log_date ON logs (log_date);
Query OK, 0 rows affected (9.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> EXPLAIN SELECT * from logs where log_date < "2013-09-11";
| id | select_type | table | type | possible_keys | key | key_len | ref | row |Extra
+----+-------------+-------+------+-------------------+------+---------+------+-----+-----
| 1 | SIMPLE | logs | ALL | idx_logs_log_date | NULL | NULL | NULL | 1420480 | Using where |
1 row in set (0.00 sec)
mysql> delete from logs where log_date < "2013-09-11";
Query OK, 1163008 rows affected (14 min 20.87 sec)
mysql> SELECT COUNT(id) FROM logs WHERE log_date < "2013-09-14";
+-----------+
| COUNT(id) |
+-----------+
| 1182688 |
+-----------+
1 row in set (0.58 sec)
DROP INDEX `idx_logs_log_date` ON logs;
delete from logs where log_date < "2013-09-11";
create index idx_logs_log_date ON logs (log_date);