我使用的语句 select visit.*,pplist.id ppid from visit left join pplist on visit.orderserial=pplist.orderCode where visittime >= convert( '" + date1 + "',datetime) and visittime < INTERVAL 1 DAY + convert('" + date2 + "',datetime) and refurl like '%" + key + "%' LIMIT " + page + ",100; 每执行一次查100,但问题出现了 查到几千时非常吃力了。 我想用下面的例子 select t1.a,t1.b from test t1,(select a from test where a>100 limit 100000,10) t2 where t1.a=t2.a; 对上面的进行优化,但我刚接触MYSQl 所以语句不太会写 能帮忙的兄弟写一下,或者有更好的方式也行。
最新回答
沿途有你
2026-07-16 11:42:36
你第二个会生成很多条记录,这个是多表查询了, 你这么一查的话会生成很多条记录
比如说你 A 表 5000条,记录 B 表 有 3000条记录 你一联合就会生成 5000 * 3000条记录 ,然后在这里面进行 where 查询符合条件的记录.. 对于这个问题我们就应该这样查询
select t1.a,t1.b from (select * from table where 条件) as a, inner join (select * from table2 where 条件) as b on a.a=b.a 这样的话速度会快很多... 原因是 ,我先把 a 表和 b 表 里面符合条件的数据 选择出来 然后进行连接 就会快很多了 ...
SELECT id FROM ( SELECT id, ((@cnt:= @cnt + 1) + $perpage - 1) % $perpage cnt FROM news JOIN (SELECT @cnt:= 0)T WHERE id < $last_id ORDER BY id DESC LIMIT $perpage * $buttons )C WHERE cnt = 0;