我在 Rails 中使用thinking_sphinx。据我所知,Sphinx 用于全文搜索。假设我有这些查询:
keyword
country
sort order
我使用 Sphinx 进行上述所有搜索。但是,当我在没有查询的情况下进行查询时keyword
,仅在 MySQL 中使用普通查询country
而sort order
不是使用 Sphinx 会更好吗?
换句话说,是否应该只在keyword
搜索时才使用 Sphinx?
查看整体性能和速度。
我在 Rails 中使用thinking_sphinx。据我所知,Sphinx 用于全文搜索。假设我有这些查询:
keyword
country
sort order
我使用 Sphinx 进行上述所有搜索。但是,当我在没有查询的情况下进行查询时keyword
,仅在 MySQL 中使用普通查询country
而sort order
不是使用 Sphinx 会更好吗?
换句话说,是否应该只在keyword
搜索时才使用 Sphinx?
查看整体性能和速度。
不要听起来刻薄,但性能真的很重要吗?
如果您正在构建一个仅由组织内的少数用户使用的应用程序,那么您可能会忽略使用一种方法而不是另一种方法的性能优势,而是专注于代码的简单性。
另一方面,如果您的应用程序被 interwebz 上的大量用户访问,并且您确实需要专注于提高性能,那么您应该遵循上述@barryhunter 的建议并进行基准测试以确定给定情况下的最佳方法。
PS在需要之前不要优化。全心全意地努力让代码远离你的代码。
基准!基准!基准!
即自己测试。确切的性能将取决于确切的数据,甚至可能取决于您的 sphinx 和 mysql 服务器的相对性能。
当通过文本字符串搜索时,Sphinx 将提供比 MySQL 更快的速度,而通过数字键搜索时,MySQL 可能会更快。
因此,假设“国家”和“排序顺序”都可以在 MySQL 中使用数字索引进行索引,最好只使用带有“关键字”的 Sphinx,而对于其他两个 - MySQL 普通查询。
但是,正如 barryhunter 所建议的那样,基准测试不会受到伤害;)