我有一个包含列的客户表,名称是varchar(255)。在应用程序中,我们按名称提供搜索功能。我们在此表中有大约800万条记录。查询非常明显。
SELECT customer_table_columns FROM customer_table WHERE customer_name
LIKE '%user input customer name%';
现在这个查询运行速度相当慢(需要一分钟)并且会使用户烦恼。我想知道是否有办法改善此查询的性能。
此列上有索引但未定义索引类型。索引类型的选项是FULLTEXT,PRIMARY和UNIQUE。
答案 0 :(得分:1)
您的查询运行缓慢,因为您在搜索字符串的开头有一个通配符(即%
)。
通过这样的查询,MySQL需要进行全表扫描。你无能为力。
另一种方法是使用全文索引来存储名称。这样可以快速搜索名称和单词前缀中的单词。