关于一条SQL语句效率的问题
wzwen 2011-04-23 02:07:15 我有个站,打开一直感觉有点偏慢,我以为是网站线路的问题。
最近维护服务器发现,显示的负载一直不太正常,没人访问的时候,居然也在1-3之间
这就有点奇怪了,后来发现是因为系统每分钟执行一个定时任务造成的,我将这个定时任务删除后,负载立即降到0.0-0.5左右
一切恢复正常了
原来这个定时任务,是我搞的发邮件的程序
用php写的,流程大体是这样,比如用户在网站上进行了一些操作,系统会在mysql数据库的email表里插入一条记录
然后定时任务每一分钟都去读这个表,看看有没有未被发送的邮件记录,如果有,就开始发邮件,发完了,再将这条记录的状态修改成已发送
我觉得问题就出在这条sql语句上面,这个语句是每分钟读email表的,所以应该是它造成了服务器负载长期变大
而且当email表里为空的时候,负载也是很大
$SQLString = "select * from email where status=0 order by id asc limit 0,10";
上面这条语句是读取email表的最后10条记录,条件是status字段为0
请问我现在应该怎么优化它?
或者有什么其他比较好的办法?