读书人

请问优化一个SQL语句!

发布时间: 2012-06-14 16:00:31 作者: rapoo

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

SQL code
SELECT   u.idFROM  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创建单独索引。

读书人网 >Mysql

热点推荐