【发布时间】:2014-03-01 04:26:24
【问题描述】:
我有一个客户表,其中包含列名称,即 varchar(255)。在应用程序中,我们有按名称搜索的功能。我们在这个表中有大约 800 万条记录。查询非常明显。
SELECT customer_table_columns FROM customer_table WHERE customer_name
LIKE '%user input customer name%';
现在这个查询运行速度相当慢(最多需要几分钟),它会惹恼用户。我想知道是否有办法提高此查询的性能。
此列上有索引,但未定义索引类型。索引类型的选项有 FULLTEXT、PRIMARY 和 UNIQUE。
【问题讨论】:
-
你能发布表格的架构吗?为列使用索引在查询速度上应该会好得多,但其他事情,比如将数据规范化到单独的表和使用外键可以帮助排序时间等。
-
MySQL 和 'LIKE %' 和 'millions of records' 不能很好地协同工作。您确实在进行全表扫描,并且没有神奇的解决方案。检查答案@stackoverflow.com/a/11419105/1306385
标签: mysql performance