首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

求一段SQL的优化及修改的有关问题

2012-02-24 
求一段SQL的优化及修改的问题.SQL codeSELECT p.id,p.playname,p.wanfa,t.id AS tzid,t.zhid,t.idchar,t.c

求一段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.uidFROM 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.idorder by t.id desclimit 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 ...

的结果以供分析。

热点排行