【发布时间】:2009-05-18 08:16:04
【问题描述】:
我们正在使用 innoDB 引擎在 MySql 中开发我们的数据库。该数据库包含一个 varchar 类型的列,每个条目包含大约 3000 个字符。我们将在此列上提供搜索。为了加快速度,我们需要在该列上添加索引。你能提供一些这方面的信息吗?
我们需要放入哪种类型的索引来加快搜索速度?我们是否需要对它进行一些其他的关注以提高性能?
【问题讨论】:
我们正在使用 innoDB 引擎在 MySql 中开发我们的数据库。该数据库包含一个 varchar 类型的列,每个条目包含大约 3000 个字符。我们将在此列上提供搜索。为了加快速度,我们需要在该列上添加索引。你能提供一些这方面的信息吗?
我们需要放入哪种类型的索引来加快搜索速度?我们是否需要对它进行一些其他的关注以提高性能?
【问题讨论】:
如果通过搜索您的意思是您将执行这样的查询:
SELECT * from cars WHERE car LIKE '%{search_str}%'
那么恐怕即使您在car 列中添加一个键,mysql 仍然必须执行全扫描,并且您的查询可能会非常慢。
如果您计划支持要搜索的大量数据并期望一些高 qps 数字,我建议您查看 Apaches Lucene 项目,它可以大大加快执行的任何搜索查询。另外,它还支持全文搜索。
【讨论】:
就像ducky 所说,如果你要使用SQL LIKE 查询列,那么无论你在列上放置什么索引,查询都会非常慢。
有两种选择:
【讨论】: