请教,优化一个SQL语句!!!
SQL code
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要怎么优化?
------解决方案--------------------explain
或者 建索引 ,优化
------解决方案--------------------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)
这样可以吗?
------解决方案--------------------模糊查询的优化不了
------解决方案--------------------创建两个单独的索引
(id)
(tree)
------解决方案--------------------id,tree创建单独索引。