【发布时间】:2011-02-11 09:14:16
【问题描述】:
我正在构建一个抽象的宝石。我需要一个看起来像这样的 sql 查询
SELECT * FROM my_table WHERE * LIKE '%my_search%'
这可能吗?
编辑: 我不关心查询性能,因为它是管理面板的一项功能,每月使用一次。我也不知道表格有哪些列,因为它太抽象了。当然我可以使用一些 Rails ActiveRecord 函数来查找所有列,但我希望避免添加这个逻辑而只使用 *.这将是一个宝石,我不知道它将与它一起使用什么数据库。也许这里有一个性感的 rails 功能可以帮助我。
【问题讨论】:
-
请注意 - 如果您使用诸如
LIKE '%term%'之类的表达式,您基本上会阻止查询优化器使用任何类型的索引。您每次都会得到全表扫描。在性能方面不是很好。要在多列中搜索单词,请使用 全文搜索 -
“我不关心查询性能”+“防止查询优化器使用任何类型的索引。” => 可能会使系统崩溃,或者至少使用其所有资源的时间过长,并阻止任何其他可能对业务至关重要的查询。 (一旦我公司的服务器崩溃,必须重新启动一个糟糕的脏查询,禁止工人每次工作 15 分钟)。关心性能:)
-
我的解决方案对您有用吗?我好奇!请告诉我们!
-
pastebin.com/raw.php?i=7nuF5gLY 是的,感谢我现在使用此代码,它足以在抽象管理面板中进行默认搜索
标签: sql ruby-on-rails