我有一个客户表,其名称列为 varchar(255)。在应用程序中,我们有按名称搜索功能。该表中有大约 800 万条记录。查询的内容非常明显。
SELECT customer_table_columns FROM customer_table WHERE customer_name
LIKE '%user input customer name%';
现在这个查询运行速度相当慢(最多需要一分钟)并且让用户烦恼。我想知道是否有办法提高这个查询的性能。
该列有索引,但未定义索引类型。索引类型的选项有 FULLTEXT、PRIMARY 和 UNIQUE。
最佳答案
您的查询运行缓慢,因为搜索字符串开头有通配符(即 %
)。
对于这样的查询,MySQL需要进行全表扫描。您对此无能为力。
一种替代方法是使用全文索引来存储名称。这将允许快速搜索名称和单词前缀中的单词。
关于MySQL : Optimize performance of search on varchar column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565407/