amsea
group by 优化寻求指导
SELECT * FROM info where id in (select owner_id from tags WHERE meta_key = "tag" and meta_value="标签") order by porder desc, visit desc limit 0, 100
SELECT * FROM info a left join tags b on a.id = b.owner_id WHERE b.meta_key = "tag" and b.meta_value="标签" order by a.porder desc, a.visit desc limit 0, 100
我靠,这两个sql 太吃资源了。 有什么好的解决方法呢?
标签可能很多,因为会有很多条目打上一个标签啊。
yueliangdao0608
The first select statement can be replaced into the form of join.
[table=95%][tr][td][font=FixedSys][color=#000000][color=#0000FF]SELECT[/color] a[color=#0000CC].[/color][color=#0000CC]*[/color] [color=#0000FF]FROM[/color] info [color=#0000FF]as[/color] a inner join tags [color=#0000FF]as[/color] b on [color=#0000CC]([/color]a[color=#0000CC].[/color]id [color=#0000CC]=[/color] b[color=#0000CC].[/color]owner_id [color=#FF0000]and[/color] b[color=#0000CC].[/color]meta_key [color=#0000CC]=[/color] [color=#0000CC]"[/color]tag[color=#0000CC]"[/color] [color=#FF0000]and[/color] b[color=#0000CC].[/color]meta_value[color=#0000CC]=[/color][color=#0000CC]"[/color]标签[color=#0000CC]"[/color][color=#0000CC])[/color] order by a[color=#0000CC].[/color]porder desc[color=#0000CC],[/color] a[color=#0000CC].[/color]visit desc limit 0[color=#0000CC],[/color] 100[/color][/font][/td][/tr][/table]
chuhongze
[quote]原帖由 [i]amsea[/i] 于 2008-6-2 12:52 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8485408&ptid=1120642][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
SELECT * FROM info where id in (select owner_id from tags WHERE meta_key = "tag" and meta_value="标签") order by porder desc, visit desc limit 0, 100
SELECT * FROM info a left join tags b ... [/quote]
LZ,你说的资源是什么资源:数据库、CPU还是SELECT太慢,SELECT一次的时间是多少?
yueliangdao0608
[quote]原帖由 [i]chuhongze[/i] 于 2008-6-4 14:27 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8514907&ptid=1120642][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
LZ,你说的资源是什么资源:数据库、CPU还是SELECT太慢,SELECT一次的时间是多少? [/quote]
It oughts to be cpu.:mrgreen:
amsea
[quote]原帖由 [i]yueliangdao0608[/i] 于 2008-6-4 13:53 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8514380&ptid=1120642][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
The first select statement can be replaced into the form of join.
SELECT a.* FROM info as a inner join tags as b on (a.id = b.owner_id and b.meta_key = "tag" and b.meta_value="标签") order by ... [/quote]
Using where; Using temporary; Using filesort
还是不行,呵呵。