iteye_17148
iteye_17148
2009-07-09 16:11

mysql 中使用 order by,view,text~慢原因

已采纳

最近优化项目,数据量就10-20w,应该说很小了,

不过发现几个问题

表中有text、longtext字段的查询变慢,[color=red]>3秒[/color],没有text类型字段则在 [color=red]0.x秒[/color]

使用排序遇到问题,
order by 字段 (主键很快,where 中 使用到的也很快,) +limit 5000,50 速度慢的离谱 [color=red]>10秒[/color]。。
如果没有order by 或者 用order by主键或其他在where出现的条件(和业务冲突),速度在[color=red]0.3秒[/color]左右

描述不清楚见下面:
[code="sql"]SELECT id,title,content,url,ctime,is_deleted,state,hip_num
FROM news WHERE ctime between '2007-03-20 15:58:03' AND '2009-05-05 09:56:27'
AND is_deleted = 0
AND state = 4
ORDER BY hip_num DESC LIMIT 5200,30
[/code]
order by hip_num desc 很慢
order by ctime 很慢
order by is_deleted 快
order by state 快
order by id 很快

[b]问题补充:[/b]
那如何避免这种问题?拆分表?数据查询缓存???

我的查询要求很快,还请各位帮忙

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • wanghaolovezlq wanghaolovezlq 12年前

    那就只能数据切分来实现这种需求了

    点赞 评论 复制链接分享
  • ProvidenceZY iskyshop 12年前

    拆分POJO结构,给数据大的单独列出来!

    点赞 评论 复制链接分享
  • ProvidenceZY iskyshop 12年前

    字段越长,order就会越慢,因为sql会在一定长度内逐个比较

    点赞 评论 复制链接分享
  • wanghaolovezlq wanghaolovezlq 12年前

    表中有text、longtext字段的查询一定会变慢嘛

    这些类型的字段通常都是占空间比较字节比较大的,order by检索自然要慢,

    点赞 评论 复制链接分享

相关推荐