【发布时间】:2020-03-10 04:56:11
【问题描述】:
我希望在编译时生成一个 MYSQL 查询。有一些 AND 子句,我希望他们根据可选输入参数动态附加到查询中,这些参数将在运行时知道。
所以我打算进行 LIKE 搜索,而不是动态连接 AND。
假设我有一个名为“Ramakrishna”的值,查询看起来像
SELECT * from my_table WHERE col LIKE '%Ramakrishna%'
当参数没有值时,我想像搜索一样使用
SELECT * from my_table WHERE col LIKE '%%'
我想为查询中的 15 个参数执行此操作。 我不想为一个巨大的查询这样做,除非我知道这种方法的性能趋势。 会不会很贵?
【问题讨论】:
-
为什么不根据输入参数生成 where 子句?
-
查询的准备工作并不慢。它执行全表扫描。适当的全文搜索实现 solr/lucene 将搜索更好的性能增益。
-
@user9920500 。 . .我不明白这个问题。你想要什么结果?其他 14 列/参数是如何使用的?实际上,您的问题提到了“参数”,但查询没有使用其中任何一个。
标签: mysql sql performance sql-like dynamicquery