MySQL:优化varchar列上的搜索性能

时间:2014-02-04 23:03:47

标签: mysql performance

我有一个包含列的客户表,名称是varchar(255)。在应用程序中,我们按名称提供搜索功能。我们在此表中有大约800万条记录。查询非常明显。

SELECT customer_table_columns FROM customer_table WHERE customer_name 
LIKE '%user input customer name%';

现在这个查询运行速度相当慢(需要一分钟)并且会使用户烦恼。我想知道是否有办法改善此查询的性能。

此列上有索引但未定义索引类型。索引类型的选项是FULLTEXT,PRIMARY和UNIQUE。

1 个答案:

答案 0 :(得分:1)

您的查询运行缓慢,因为您在搜索字符串的开头有一个通配符(即%)。

通过这样的查询,MySQL需要进行全表扫描。你无能为力。

另一种方法是使用全文索引来存储名称。这样可以快速搜索名称和单词前缀中的单词。