我有一个包含三列(地区,州,城市)的表
CREATE TABLE ads (
Region varchar(100),
State varchar(100),
City varchar(100),
....
);
我想执行以下查询
SELECT * FROM ads
WHERE region=? OR state=? OR city=?
我可以用来减少搜索时间的最佳索引是什么?
我尝试使用多列索引
CREATE INDEX index_name
ON ads (region, state, city);
但似乎不起作用
答案 0 :(得分:0)
该索引将无济于事。如果WHERE
使用ANDs
而不是ORs
,将会很有帮助。
计划A:FULLTEXT(region, state, city)
和WHERE MATCH(region, state, city) AGAINST('+?' IN BOOLEAN MODE)
。但是,FULLTEXT
有一些警告,因此尽管速度很快,但您可能会发现它并不完美。
方案B:将OR
变成UNION
:discussion
计划C:将三列合并为一个并使用WHERE location LIKE CONCAT('%', ?, '%')
。这将无济于事,因为仍然需要完整的罐头。
计划D:更改用户界面和/或用户期望。