小编Dav*_*vid的帖子

CTE,ROW_NUMBER和ROWCOUNT

我试图返回一个数据页面,并在一个存储过程中的所有数据的行计数,如下所示:

WITH Props AS
(
    SELECT *,
    ROW_NUMBER() OVER (ORDER BY PropertyID) AS RowNumber
    FROM Property
    WHERE PropertyType = @PropertyType AND ...
)   

SELECT * FROM Props 
WHERE RowNumber BETWEEN ((@PageNumber - 1) * @PageSize) + 1 AND (@PageNumber * @PageSize);
Run Code Online (Sandbox Code Playgroud)

我无法返回行计数(最高行号).

我知道这已经讨论过了(我已经看过了: 使用row_number从查询中获取@@ rowcount的有效方法)但是当我在CTE中添加COUNT(x)OVER(PARTITION BY 1)性能降低并且上面的查询通常没有时间需要永远执行.我估计这是因为计算了每一行的数量?我似乎无法在另一个查询中重用CTE.Table Props有100k记录,CTE返回5k记录.

sql sql-server row-number rowcount common-table-expression

11
推荐指数
1
解决办法
4万
查看次数

如何加速.NET winforms渲染

我有一系列表格并在它们之间导航.

每个表单都有一组控件,我从SQLite数据库加载属性,这是长(约1s)操作,不会给用户最好的感觉,因为表单正逐渐被绘制.

我不介意延迟,但我希望在加载所有数据时绘制表单.我想避免使用新线程,因为这会导致跨线程操作问题.

除了通过缓存加载的数据来加速整个应用程序之外,还有什么好的解决方案吗?

performance rendering winforms

8
推荐指数
2
解决办法
7522
查看次数

由于ORDER BY子句导致SQL查询性能不佳

我有一个查询连接4个表,WHERE子句中有很多条件.该查询还包括数字列上的ORDER BY子句.返回需要6秒,这太长了,我需要加快速度.令人惊讶的是,我发现如果我删除ORDER BY子句需要2秒钟.为什么订单会产生如此巨大的差异以及如何优化它?我正在使用SQL Server 2005.非常感谢.

由于我正在清除执行计划缓存,因此我无法确认ORDER BY有很大的不同.但是,你能说明如何加快这一点吗?查询如下(为简单起见,有"SELECT*",但我只选择我需要的那些).

SELECT *
FROM View_Product_Joined j 
INNER JOIN [dbo].[OPR_PriceLookup] pl on pl.siteID = NodeSiteID and pl.skuid = j.skuid 
LEFT JOIN [dbo].[OPR_InventoryRules] irp on irp.ID = pl.SkuID and irp.InventoryRulesType = 'Product'
LEFT JOIN [dbo].[OPR_InventoryRules] irs on irs.ID = pl.siteID and irs.InventoryRulesType = 'Store'
WHERE (((((SiteName = N'EcommerceSite') AND (Published = 1)) AND (DocumentCulture = N'en-GB')) AND (NodeAliasPath LIKE N'/Products/Cats/Computers/Computer-servers/%')) AND ((NodeSKUID IS NOT NULL) AND (SKUEnabled = 1) AND pl.PriceLookupID in (select TOP 1 PriceLookupID …
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance sql-server-2005

7
推荐指数
1
解决办法
3万
查看次数

从 IDataReader 读取字段时出现间歇性 System.IndexOutOfRangeException

我在代码中有一个非常奇怪的问题,我不希望它会失败。这是一个基于 AspDotNetStoreFront 的网站,有一些流量但不是那么大。尝试从读取器读取数据库字段时,站点间歇性崩溃。这发生在网站的不同地方。此类代码的示例在下面与object pValue = rs["PropertyValueString"]; 的行中。

private Dictionary<string, object> GetPropertValuePairs(string userName)
    {
        string query = string.Format("select PropertyName, PropertyValueString from dbo.profile with(nolock) where CustomerGUID = {0} and StoreID = {1}", DB.SQuote(userName),AppLogic.StoreID());

        Dictionary<string, object> propertyValues = new Dictionary<string, object>();

        using (SqlConnection conn = new SqlConnection(DB.GetDBConn()))
        {
            conn.Open();

            using (IDataReader rs = DB.GetRS(query, conn))
            {
                while (rs.Read())
                {
                    string pName = DB.RSField(rs, "PropertyName");
                    object pValue = rs["PropertyValueString"];

                    if (propertyValues.ContainsKey(pName) == false)
                    {
                        propertyValues.Add(pName, pValue);
                    }
                }

                rs.Close();
                rs.Dispose();
            }
            conn.Close();
            conn.Dispose(); …
Run Code Online (Sandbox Code Playgroud)

c# sql datareader sqlclient aspdotnetstorefront

5
推荐指数
1
解决办法
5199
查看次数

C# 6.0 if 语句中的空条件运算符

有人可以解释一下 if 语句中空条件运算符的逻辑吗?

想象一下下面的代码

List<string> items = null;
if (items?.Count == 0)
{
    Console.WriteLine("error");
}
else
{
    Console.WriteLine("OK");
}
Run Code Online (Sandbox Code Playgroud)

以上将打印OK。为什么它在下一个块不会编译时编译?

if (items?.Any())    // won't compile but if (items?.Count() == 0) would
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我猜?。当检测到 null 并且跳过整个 if 时将停止执行,但为什么“?.Any()”不是这种情况?仅仅因为它是一种方法而“count”是一种属性?

为什么 Linq 扩展方法 Any() 需要从 Nullable 到 bool 的显式转换,其中 Count() == 0 编译时不需要 Nullable 到 int 的转换?

c# linq null-conditional-operator

2
推荐指数
2
解决办法
110
查看次数

jquery datepicker getMonth()怪异

jquery datepicker非常有趣,但我遇到了一个奇怪的错误.我试图禁用某些日子,即.2009年10月28日,但11月28日在日历上被禁用!知道我在这里做错了什么吗?disabledDays数组变量是在服务器上注册的脚本,因为结束日期来自数据库.

<script type="text/javascript">

    $(document).ready(function() {
        $("#datepicker").datepicker(
            {
                dateFormat: 'dd/mm/yy',
                changeYear: false,
                yearRange: '0:+1',
                numberOfMonths: 2,
                firstDay: 1,
                minDate: '0',
                maxDate: '+2m',
                altFormat: 'dd/mm/yy',
                beforeShowDay: DisableClosedDays
            });
    });


    function DisableClosedDays(calendarDate) {
        for (i = 0; i < disabledDays.length; i++) {
            if (calendarDate.getDate() == disabledDays[i][0]
            && calendarDate.getMonth() == disabledDays[i][1]
            && calendarDate.getFullYear() == disabledDays[i][2]) {
                return [false, ''];
            }
        }
        return [true, ''];
    }
</script>





<script type="text/javascript"> 
//<![CDATA[
var disabledDays = [[22,10,2009],[30,10,2009],[12,10,2009]];
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery-ui datepicker

1
推荐指数
1
解决办法
5571
查看次数

如何在C#中通过引用传递值?

我有以下linq代码.

searchResults = (from item1 in searchResults
              join item2 in coll
              on item1.skuID equals item2.Skuid
              where item2.SearchableValue == value
              select item1).ToList();
Run Code Online (Sandbox Code Playgroud)

变量searchResults作为通用List在方法中传递.上面的linq段过滤列表.当从方法返回时,我希望修改列表但引用在传入时保持不变.如何修改我的引用,而不是副本?谢谢.

c# linq pass-by-reference

1
推荐指数
2
解决办法
3505
查看次数