请教,优化一个SQL语句!!!

phf0313 2012-06-06 10:13:27

SELECT
u.id
FROM
user u,
(SELECT
id,
tree
FROM
user
WHERE id IN (30, 59, 58, 57, 56, 60, 61, 62, 63)) a
WHERE u.tree LIKE CONCAT('1,', a.id)
ORDER BY u.id ASC

tree列的数据为:
1
1
1,30
1,59
1,59,100
....

要查出(1,*)的数据,这个SQL要怎么优化?
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2012-06-08
  • 打赏
  • 举报
回复
id,tree创建单独索引。
rucypli 2012-06-06
  • 打赏
  • 举报
回复
模糊查询的优化不了
diffmaker 2012-06-06
  • 打赏
  • 举报
回复
SELECT id FROM user WHERE LEFT(tree,2)='1,' AND (SUBSTR(tree,3,IF(locate(',',tree,3) > 0,locate(',',tree,3)-3,length(tree)-2))+0) IN (30, 59, 58, 57, 56, 60, 61, 62, 63)
diffmaker 2012-06-06
  • 打赏
  • 举报
回复
SELECT id FROM user WHERE SUBSTR(tree,3,IF(locate(',',tree,3) > 0,locate(',',tree,3)-3,length(tree)-2)) IN (30, 59, 58, 57, 56, 60, 61, 62, 63)

这样可以吗?
小小小小蜗牛 2012-06-06
  • 打赏
  • 举报
回复
explain
或者 建索引 ,优化
ACMAIN_CHM 2012-06-06
  • 打赏
  • 举报
回复
创建两个单独的索引
(id)
(tree)

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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