create index xxx on b (fname,id);

解决方案 »

  1.   

    B.fname like '%$somevalue%' 无法用到索引
    在B表的FID fname上建立索引
      

  2.   

    SELECT A.* from TableA AS A  left join TableB as B on A.fid=B.fid  and  B.fname like '%$some%' where id >=(SELECT id from TableA order by id desc limit 99,1) limit 100
      

  3.   

    结果不太正确。
    SELECT A.* from TableA AS A 
    where   id >=(SELECT id from TableA order by id desc limit 99,1) limit 100
    这个返回的是100条记录SELECT A.* from TableA AS A 
    left join TableB as B on A.fid=B.fid
    where B.fname ='$some' AND id >=(SELECT id from TableA order by id desc limit 99,1) limit 100这个呢。返回的记录行数不正确。好像是最后一页记录。
      

  4.   

    SELECT A.* from TableA AS A 
    where   id >=(SELECT id from TableA order by id desc limit $offset,1) limit $pagesize这里的$offset=$page*$pagesize-1;但是left join TableB  as B on A.fid=B.fid where ..... 之后,结果的行数就不对了。
    如果按照这个翻页算法。这个查询好像只在100条记录里面进行筛选。
      

  5.   

    SELECT A.* from TableA AS A 
    inner join 
    (SELECT id from TableA order by id desc limit 99,1) b
    on a.id>=b.id
    limit 100
      

  6.   

    谢谢诸位的解答现在问题是:SELECT A.* from TableA AS A 
    left join TableB as B on A.fid=B.fid
    where B.fname ='$some' AND id >=(SELECT id from TableA order by id desc limit 99,1) limit 100
    这个结果不太对,left join TableB as B on A.fid=B.fid
    where B.fname ='$some' 加上这个,貌似是在100条里面筛选结果,这里我希望跟正常分页一样
      

  7.   


    要求 ,TableA有130万的记录,TableB表有1W的记录,关系:A.fid=B.fid,其中TableA.id为唯一索引,TableB.fname为normal索引,现在要对TableA表进行分页,要支持对TableB表的fname进行模糊查询。
    问题 1:
    比如传统的分页:select * from TableA limit $offset,$pagesize
    当$offset数量级非常大的时候,就非常慢了。问题2:
    如果要对TableB表的fname进行模糊查询
    select A.*,B.fname from TableA A inner join TableB B on A.fid=B.fid where B.fname like '%$value%' limit $offset,$pagesize;这个查询依然很慢所以我希望改进这两个SQL的效率
      

  8.   

    问题 2:
    like '%$value%' 无法用到索引,没有优化方法
    问题 1:
    假设ID唯一
    select a.* from TableA a inner join (select id from TableA order by id limit 1000,1) b
    on a.id=b.id
      

  9.   

    谢谢各位的回答,这个问题我已经解决,在TableA新增一个fname字段并索引。