求一段SQL的优化及修改的问题.
-
SQL code
SELECT p.id,p.playname,p.wanfa,t.id AS tzid,t.zhid,t.idchar,t.czlx,t.wanfa,t.qihao,t.money,t.zjmoney,t.jjz,t.beishu,t.ms,t.`addtime`,t.zt AS tzzt,qh.qihao,qh.kjhm,qh.czlx,u.uid,u.username,t.uid FROM tz AS t Inner Join playgroup AS p ON t.wanfa = p.wanfa Inner Join qihaoinfo as qh ON t.qihao = qh.qihao AND t.czlx = qh.czlx Inner Join username as u ON t.uid = u.uid and u.uid = '32' and (t.addtime >='1322064000' and t.addtime <= '1322150399') GROUP BY t.id order by t.id desc limit 0,20
这段SQL还能否再进行优化?
还有一个就是t.zhid,有时候会有相同的zhid值.我想只显示一条.其它的放到点击后的页面里显示.
这个如何做呢.
我加了一个 DISTINCT(t.zhid),在上面,好象不管用..
还望高手指点一下.
这段SQL还能否再进行优化?
有没用上索引。EXPLAIN 分析一下。
还有一个就是t.zhid,有时候会有相同的zhid值.我想只显示一条.其它的放到点击后的页面里显示.
这个如何做呢.
GROUP BY t.id,t.zhid
我加了一个 DISTINCT(t.zhid),在上面,好象不管用..
DISTINCT要记录都雷同才排除
如果相同id数据量大的话,感觉你先分组后再内联其它表。会好些。
先排好序再套一下啊。然后分组。就以第一条分组了。
select * FROM (你的sql) GROUP BY zhid
探讨
引用:
这段SQL还能否再进行优化?
有没用上索引。EXPLAIN 分析一下。
还有一个就是t.zhid,有时候会有相同的zhid值.我想只显示一条.其它的放到点击后的页面里显示.
这个如何做呢.
GROUP BY t.id,t.zhid
我加了一个 DISTINCT(t.zhid),在上面,好象不管用..
DISTINCT要记录都……
1、你的SQL语句不是标准的;
2、将你的查询存为VIEW,假设ID唯一
select * from view1 a where not exists(select 1 from view1 where a.zhid=zhid and a.id>id)
先贴出你的
explain select …
show index from …
的结果以供分析。