假设有人来找您,并说我们将通过用equals替换equals来减少我们编写的SQL数量IN
。既可以用于单个标量值,也可以用于数字列表。
SELECT *
FROM table
WHERE id = 1
或者
SELECT *
FROM table
WHERE id IN (1)
这些语句等于优化器产生的内容吗?
从表面上看,这看起来确实很简单,但是由于两个原因,它导致了简化:1.不需要复制大型SQL块;并且2.我们不会过度使用动态SQL。
这是一个人为的示例,但请考虑以下内容。
select a.* from tablea a
join tableb b on a.id = b.id
join tablec c on b.id2 = c.id2
left join tabled d on c.id3 = c.id3
where d.type = 1
…对于不止一种情况,同样如此
select a.* from tablea a
join tableb b on a.id = b.id
join tablec c on b.id2 = c.id2
left join tabled d on c.id3 = c.id3
where d.type in (1,2,3,4)
(这甚至不是一个很大的声明)
可以想象,您可以执行字符串连接,但是鉴于ORM的使用,这是不理想的,而且动态SQL字符串连接总是以良好的意愿开始的(至少在这些部分中如此)。
这两个会产生相同的执行计划-无论是table scan
,index scan
或index seek
取决于是否/如何你有你的表建立索引。
您可以自己查看-显示图形执行计划(SQL Server Management Studio) -请参阅“使用执行计划选项”一节。
问题内容: 标签列具有“苹果香蕉橙”和“草莓香蕉柠檬”之类的值。我想找到等效的SQLAlchemy语句 我应该怎么做才能做到这一点? 问题答案: 每列都有一个方法,可以在中使用。给定一个搜索字符串,请在任一侧添加一个字符以在两个方向上作为子字符串进行搜索。
问题内容: 我很难弄清楚如何将这个简单的SQL语句转换为(c#)linq到SQL: 任何帮助表示赞赏 问题答案: 我仍在学习LINQ,但这似乎可行 我希望能够很好地将LINQ转换为SQL,因为我仅在对象上进行过尝试。
Java中的有两个类似的方法和。 它们之间有什么区别? 当它们输出不同的结果时?
问题内容: 从Java 1.5中,你几乎可以互换使用在许多情况下。 但是,我发现代码中存在潜在的缺陷,这让我有些惊讶。 如下代码: 值相等时,似乎无法正确设置不匹配,尽管我无法确定在什么情况下。我在Eclipse中设置了一个断点,发现值都为137,并且检查了布尔表达式,并说它是假的,但是当我越过它时,它会将不匹配设置为true。 将条件更改为: 解决了问题。 谁能阐明为什么会这样?到目前为止,我只
问题内容: String s1 = “andrei”; String s2 = “andrei”; 提供以下代码,为什么第二个比较s2 == s3为true?s2.toString()返回的实际上是什么?实际位于哪里? 问题答案: 首先是无操作: 其次,对String常量进行了插值,因此s1和s2在幕后被更改为相同的String实例。
问题内容: 我有几个内容表,我想用随机的文本段落来填充。在MS Word中,我可以简单地将= rand()和presto放在一起!我得到了三段现成的文字。 是否存在可用于使用t-sql生成随机词典单词的SQL脚本/命令? 问题答案: