小编Los*_*ear的帖子

SQL性能,.Net优化与最佳实践

我需要你的专业人士/大师的确认/解释,因为我的团队告诉我"这没关系",这让我感到很沮丧:)

背景:我们的主要MVC3/.Net4 Web应用程序正在使用SQL Server 2008.我们在任何给定点上都有大约200多个并发用户.服务器受到极大的打击(锁定,超时,整体缓慢),我正在尝试应用我在整个职业生涯和最后一次MS认证课程中学到的东西.他们是我们所有人都在钻的东西("关闭SQL连接STAT"),我试图向我的团队解释这些"小东西",虽然不是唯一一个有所作为,但最终还是加起来.

我需要知道以下是否会对性能产生影响,或者它是否只是"最佳实践"

1.使用"USING"关键字. 他们的大部分代码都是这样的:

public string SomeMethod(string x, string y) {
    SomethingDataContext dc = new SomethingDataContext();
    var x = dc.StoredProcedure(x, y);
}
Run Code Online (Sandbox Code Playgroud)

虽然我试图告诉他们USING会更快地关闭/释放资源:

using (SomethingDataContext dc = new SomethingDataContext()) {
    var x = dc.StoredProcedure(x, y);
}
Run Code Online (Sandbox Code Playgroud)

他们的论点是GC在代码执行完毕后做了很好的清理工作,因此USING没有产生巨大的影响.是真还是假?为什么?

2.连接池

我一直听说设置连接池可以显着加快任何网站(至少.Net w/MSSQL).我建议我们在web.config中的connectiontring中添加以下内容:

..."Pooling = True; Min Pool Size = 3; Max Pool Size = 100; Connection Timeout = 10;"......

他们的论点是.Net/MSSQL已经在幕后设置了连接池,没有必要放入我们的web.config.对或错?为什么每个其他网站都说如果已经设置了池,那么应该添加池以获得最佳性能?

3.最小化对DB的调用次数

默认的.Net MVC项目附带的角色/成员资格提供程序很不错 - 它非常方便,可以为您完成大部分工作.但是这些人正在认真UsersInRoles()地使用它并像一个全局变量一样自由地使用它(每次调用这个方法时它就会击中数据库).我创建了一个"用户对象",它在每个页面加载(以及其他一些用户的东西,如GUID等)上预先加载所有角色,然后查询该对象是否具有该角色.

该网站的其他部分有FOR语句循环超过200次,并在每次传递=超过4,000个数据库调用时执行20-30个sql查询.它以某种方式在几秒钟内完成,但我想要做的是将20-30个DB调用合并为一个,这样它就可以进行200次调用(每个循环).但是因为SQL分析器说查询花了"0秒",所以它们的论点是它如此快速和小,以至于服务器可以处理这些大量的数据库查询.

我的想法是"是的,这些查询运行速度很快,但它们会破坏整个SQL服务器的性能." 这可能是一个促成因素吗?我是否担心什么,或者这是服务器整体性能问题的重要因素?

4.其他代码优化

首先想到的是使用StringBuildervs一个简单的字符串变量.我理解为什么我应该使用StringBuilder(特别是在循环中),但是他们说这没关系 - …

.net c# sql-server asp.net-mvc sql-server-2008

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

如何在LINQ to Entities中进行LEFT JOIN?

我花了最近两天试图找出如何在LINQ中进行真正的LEFT JOIN并且我没有成功.我有一个用户表,其中有一个"Primary2Address"列,可能并且通常为NULL.所以我必须在这里做LEFT JOIN.另外,在Address表中,我有更多可能为NULL的关系,所以我必须做多个LEFT JOINS.
每次LINQ尝试我都会用UNIONS输出一些严重的CRAZY sql语句,嵌套的SELECT语句和更古怪的东西.
我只需要:

SELECT u.UserName FROM Users u 
LEFT JOIN Addresses a ON a.AddressiD = u.Primary2Address
LEFT JOIN States s ON s.StateID = a.Address2State
LEFT JOIN Countries c ON c.CountryID = a.CountryID
Run Code Online (Sandbox Code Playgroud)

请帮忙!到目前为止,我的解决方法是创建一个使用上面的sql语句的存储过程,但我真的想尝试使用LINQ(L2E).多谢你们!

.net linq linq-to-entities

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

为什么这个函数多次触发?

我填写这个清单:

<ul id="FolderList"></ul>
Run Code Online (Sandbox Code Playgroud)

使用jquery生成以下HTML的文件夹列表:

<ul id="FolderList">
    <li id="FolderList0" onclick="return myFunc(0)">Item 1</li>
    <li id="FolderList1" onclick="return myFunc(1)">Item 2</li>
    <li id="FolderList2" onclick="return myFunc(2)">Item 3
        <ul>
            <li id="FolderList2a" onclick="return myFunc(2a)">Sub Item 1</li>
            <li id="FolderList2b" onclick="return myFunc(2b)">Sub Item 2
                <ul>
                    <li id="FolderList2bi" onclick="return myFunc(2bi)">Subsub Item 1</li>
                </ul>
            </li>
        </ul>          
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

...

function myFunc(id) {
//do something
Run Code Online (Sandbox Code Playgroud)

返回false; };

出于某种原因,如果我点击1级li项,函数myFunc()将按预期执行.如果我点击"2级"项目(即:FolderList2a),则会调用myFunc两次.如果我点击第3级(即:FolderList2bi),它会被调用3次 - 依此类推.谁知道这里发生了什么?!提前致谢!

html javascript

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

JQuery:当元素隐藏时阻止div崩溃()

提交表单时,表单"滑出"并使用$.get(),我加载另一页并将其滑入.在隐藏表单和下一页的显示之间,div崩溃,我的所有页脚内容都会短暂结束形式在哪里.

然后,当"下一页"完成加载时,页脚返回到底部(在新页面内容下).因为表单的大小可能会有很大变化,我试图避免为DIV指定高度.

有没有办法防止div改变?

码:

$("#MyForm").hide("slide", { direction: "left" }, 250, function () {
    $.get("../NewPage.html", function (data) {
        $("#NewPagePlaceholder").html(data);
        $("#NewPagePlaceholder").show("slide", { direction: "right" }, 250);
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery html5 css3

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

jQuery:从下拉结果中删除ui-autocomplete样式

我有一个页面使用jquery的自动完成功能,对于我的生活,我无法删除/修改应用于下拉列表的样式.

我正在使用谷歌CDN的jquery-ui CSS,所以我试图避免在本地保存并修改它:)

使用CSS,我尝试重写UL(.ui-autocomplete),LI(.ui-menu-item)和LI中的锚标签 - 我有很多工作,但似乎添加了填充在我的CSS之后,当我将鼠标从列表项移到下一个项目上时,一瞬间,前一个项目具有默认的jquery-ui背景(标题中使用的灰色渐变,例如对话框标题栏) .
任何人都有css方便重置自动完成样式?

*更新* 链接到小提琴:

[http://jsfiddle.net/HccBe/][1]
Run Code Online (Sandbox Code Playgroud)

如果将鼠标悬停在其中一个项目上,则会以蓝色突出显示.然后将鼠标移动到它的左侧,但仍然在下拉框中,你会注意到蓝色消失了,但jquery的渐变背景仍然存在.

jquery jquery-ui jquery-ui-autocomplete

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

T-SQL:使用动态比较运算符过滤(=,<=,> =,...)

我正在创建一个报告工具,用户可以在其中选择一个运算符和2个值进行过滤.

我的基本表:

UserID     UserName
-------------------------------
1          User1
2          User2
3          User3
4          User4
5          User5
Run Code Online (Sandbox Code Playgroud)

用户可以选择我想要翻译的运算符,如下所示:

Option      SQL Operator
------------------------------
between         column between x and y
like            column '%' + x + '%'
greater than    column > x
less than       column < x
equal to        column = x
not equal to    column <> x
Run Code Online (Sandbox Code Playgroud)

我在想类似的东西:

... column = ISNULL(@parameter, column)
Run Code Online (Sandbox Code Playgroud)

从某种意义上说,如果你传递的东西或什么都没有,它仍然会正确查询.

这是我正在玩的TSQL(**不工作*):

declare @bwValue1 varchar(200) = '2', --between value 1
@bwValue2 varchar(200) = '4'; --between value 2

select …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

SQL Server 2008 - 需要帮助合并2个表(笛卡儿)

我有两个完全不相关的表,我需要把它们放在一起 - 每个表一列.当我尝试笛卡尔联合时,我最终得到了所有组合:

SELECT Field1, Field2 FROM Table1, Table2
Run Code Online (Sandbox Code Playgroud)

结果:

Table1.Field1 Table2.Field2
---------------------------
1             1
1             2
1             3 
2             1
2             2
2             3
3             1
3             2
3             3
Run Code Online (Sandbox Code Playgroud)

我需要它并排返回:

Table1.Field1 Table2.Field2
---------------------------
1             1
2             2
3             3 
Run Code Online (Sandbox Code Playgroud)

这可能吗?提前致谢

编辑

Table1.Table1IDs
----------------
1
2
3
4
5

Table2.Table2IDs
----------------
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)

期望的输出(进入临时表/选择语句)

Table1.Table1IDs    Table2.Table2IDs
------------------------------------
1                   6
2                   7
3                   8
4                   9
5                   10
Run Code Online (Sandbox Code Playgroud)

这样我就可以将插入到实际的表中,我需要进行插入:

INSERT INTO dbo.MTMObjects
    SELECT Table1IDs, Table2IDs 
    FROM [temp …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

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

将自定义分隔的字符串转换为List <myClass>?

我怎么转这个:

string x = "key:value|key:value|key:value|key:value";
Run Code Online (Sandbox Code Playgroud)

进入这个?

List<myClass> listObj;
Run Code Online (Sandbox Code Playgroud)

myClass定义:

public class myClass
{
    public string keyName { get; set; }
    public string keyValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

必须有一种方法来使用LINQ或其他东西:)提前感谢!

*注意* 我应该添加我知道如何分割它并循环它,但必须有一个更好的方法:)

c# linq

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

如何在未完全实施的情况下使用新的HTML5标签?

我已经完成了一些新的HTML5标签,并阅读了W3cschools等所有新标签,我有点困惑.

如果我创建一个使用"区域","部分","旁白"等的HTML页面,那么什么都没发生?我必须手动设置它们 - 这很精细,但我错过了什么?如果我必须使它成为ASIDE(常见的css:float:right; width:30%,sorta thing),那么将标签声明为"旁边"是什么意思?
为什么不留下DIV标签并设计它们?

我还注意到了新的属性,比如"draggable",但是,惊喜惊喜,它不会拖累!我必须编写它来拖动(javascript/jquery ??)?宣布它是否可以拖延有什么意义?我可以创建一个div标签并使用JQuery拖动它,所以有人请赐教我关于html5的那些"哎呀呀呀呀"?

html5

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