Mysql 更多数据,但即使用你的索引替换我的索引,我也会得到同样的行为。提示是错误的。该索引无法支持在like右侧使用的列。很抱歉,我没有看到使用like和列值的查询-在这种情况下,百分比将按字面形式表示,而不是作为通配符 insert into acl value

Mysql 更多数据,但即使用你的索引替换我的索引,我也会得到同样的行为。提示是错误的。该索引无法支持在like右侧使用的列。很抱歉,我没有看到使用like和列值的查询-在这种情况下,百分比将按字面形式表示,而不是作为通配符 insert into acl value,mysql,sql,database,postgresql,indexing,Mysql,Sql,Database,Postgresql,Indexing,更多数据,但即使用你的索引替换我的索引,我也会得到同样的行为。提示是错误的。该索引无法支持在like右侧使用的列。很抱歉,我没有看到使用like和列值的查询-在这种情况下,百分比将按字面形式表示,而不是作为通配符 insert into acl values (default, '/public/%', false); insert into acl values (default, '/admin/%', true); select * from acl where '/public/hell


更多数据,但即使用你的索引替换我的索引,我也会得到同样的行为。提示是错误的。该索引无法支持在
like
右侧使用的列。很抱歉,我没有看到使用like和列值的查询-在这种情况下,百分比将按字面形式表示,而不是作为通配符
insert into acl values (default, '/public/%', false);
insert into acl values (default, '/admin/%', true);
select * from acl where '/public/hello' like pattern;
create index acl_pattern on acl(left(pattern, 6));

select * 
from acl 
where left(pattern, 6) = left('/public/something', 6) and '/public/something' like pattern
pattern = left('/public/blabla', length(pattern))
SELECT ...
    FROM ...
    WHERE pattern <= '/public/blabla'
    ORDER BY pattern DESC
    LIMIT 1
SELECT ...
    FROM ( SELECT --- as above ) AS x
    WHERE pattern = LEFT('/public/blabla', CHAR_LENGTH(pattern))