有两个表,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 '%张三%'

解决方案 »

  1.   

    select count(a.id) from A a 
    inner join b 
    on a.id=b.informid 
    where lyr like '%张三%' and b.name='张三'
      

  2.   

    Don't use subquery in this situation,use join instead.
      

  3.   

    你的sql语句有点奇怪?
    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字段做上索引