MYSQL这个怎么优化

山东高速大哥 2014-04-09 08:26:06
SELECT *
FROM add
ORDER BY LENGTH( title ) DESC
LIMIT 10

数据20W条,执行要1秒多。。。。怎么优化哇
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
20W条不多,建议重新设计数据库,新建一个列,储存LENGTH( title ) ,在插入时,用 strlen($title) 计算。然后这个新的列建立索引。(如果id是自增的话,可以尝试把 id和这个新列 作为一个primary key) 另外,不要用SELECT * ,用 SELECT title,content,date 之类的,把你需要的列写出来。
码无边 2014-04-10
  • 打赏
  • 举报
回复
desc SELECT * FROM add ORDER BY LENGTH( title ) DESC LIMIT 10 分析下sql,关键字段加上索引。
xuzuning 2014-04-10
  • 打赏
  • 举报
回复
做一个 LENGTH( title ) 的索引 你的排序规则很怪异哟
PhpEr_贵 2014-04-10
  • 打赏
  • 举报
回复
select * 可以不用返回 全部字段吗? 可以在存储的时候多一个字段来存储 LENGTH( title ) 的值 ,并且用两个触发器维护这个值(update和insert)后都要维护,再在这列上建立索引 ,应该会好一点吧
littlebirds 2014-04-10
  • 打赏
  • 举报
回复
关键字加索引能提升不少效率。
一起混吧 2014-04-09
  • 打赏
  • 举报
回复
order by 恐怕优化不了,1秒多也不慢呀。
嘻哈大咖秀 2014-04-09
  • 打赏
  • 举报
回复
这已经是最简单的了啊 还怎么优化啊 建议用缓存吧 查询的结果缓存起来 不需要反复查询了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧