我需要参数化基本查询吗
Posted
技术标签:
【中文标题】我需要参数化基本查询吗【英文标题】:Do I need to parameterize basic queries 【发布时间】:2017-07-20 07:01:40 【问题描述】:我有EntityFramework
和LINQ to SQL
背景。
我正在考虑使用 dapper 来提高性能。
Dapper 缓存有关其运行的每个查询的信息,这使其能够快速实现对象并快速处理参数。当前实现将此信息缓存在ConcurrentDictionary
对象中。它存储的对象永远不会被刷新。如果您在不使用参数的情况下即时生成 SQL 字符串,您可能会遇到内存问题。我们可以将字典转换为LRU Cache
。
我是否必须参数化所有查询。 即使是没有任何参数的查询。
例子
Select Id,Boo FROM dbo.FOO
【问题讨论】:
【参考方案1】:您的查询没有任何变化,所以,不,您不需要参数化它。
警告告诉你,如果你写Select Id,Boo FROM dbo.FOO where Bar=3
、Select Id,Boo FROM dbo.FOO where Bar=4
和Select Id,Boo FROM dbo.FOO where Bar=5
,那么3个查询将被缓存。随着您不断改变与Bar
匹配的内容,将会制作更多副本。
【讨论】:
以上是关于我需要参数化基本查询吗的主要内容,如果未能解决你的问题,请参考以下文章
如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?