有两个表,A表里大概有3000多条记录,B表里有每个人阅读A表具体记录的阅读记录,想获取某个人的未阅读记录,和已阅读记录,现在用的是下面的sql,发现大概需要5秒,若以后A表,B表记录继续增加,速度会更慢,不知道大家有何建议,进行优化select count(id) from A a where a.id in (select informid from B b where a.id=b.informid and name='张三') and lyr like '%张三%'
调试欢乐多
inner join b
on a.id=b.informid
where lyr like '%张三%' and b.name='张三'
1> lyr like '%张三%'
为什么有这个条件?你前面用已经用name='张三'条件限定了呀!
并且如果这样, '张三'和'张三四'是不是成为了一个人?2>你是要找看过A表中的记录.每看了一个A表的记录,在B表中就会加一条包含A表id的记录.
建议的SQL:select count(id) from a where
id in (select informid from b where name='张三')优化建议: 对b表的name字段做上索引