这是一个代码示例:
class Program
{
static void Main(string[] args)
{
var obj = new DerivedClass();
obj.SomeMethod(5);
}
}
class BaseClass
{
internal void SomeMethod(int a) { }
}
class DerivedClass : BaseClass
{
internal void SomeMethod(long a) { }
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下为什么派生类调用的方法(而不是基类方法)?我需要详细解释这种情况.我将非常感谢任何有用文章的链接.
谢谢.
我有以下查询:
SELECT *
FROM
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY Code ORDER BY Price ASC) as RowNum
from Offers) r
where RowNum = 1
Run Code Online (Sandbox Code Playgroud)
Offers 表包含大约 1000 万条记录。但是那里只有大约 4000 个不同的代码。所以我需要为每个代码获取价格最低的行,结果中只有 4000 行。
我在 INCLUDE 语句中有一个关于(代码、价格)列的索引以及所有其他列。
查询运行 2 分钟。如果我查看执行计划,我会看到具有 10M 实际行的索引扫描。所以,我猜它会扫描整个索引以获得所需的值。
为什么 MSSQL 要做全索引扫描?是因为子查询需要整个数据吗?如何避免这种扫描?是否有仅处理分区中第一行的 SQL 提示?
还有其他方法可以优化此类查询吗?