小编Lee*_*ett的帖子

现实生活中的例子,何时在SQL中使用OUTER/CROSS APPLY

我一直在CROSS / OUTER APPLY和同事一起看,我们正在努力寻找现实生活中使用它们的例子.

我花了很多时间看看我何时应该使用Cross Apply而不是Inner Join?和谷歌搜索但主要(唯一)的例子似乎很奇怪(使用表中的行数来确定从另一个表中选择多少行).

我认为这种情况可能会受益于OUTER APPLY:

联系人表(每个联系人包含1条记录)通讯条目表(每个联系人可以包含n个电话,传真,电子邮件)

但是使用子查询,公共表表达式,OUTER JOINRANK()OUTER APPLY似乎都同样执行.我猜这意味着该方案不适用于APPLY.

请分享一些现实生活中的例子并帮助解释这个功能!

sql sql-server sql-server-2005 sql-server-2008

119
推荐指数
4
解决办法
16万
查看次数

提高大型表上的SQL Server查询性能

我有一个相对较大的表(目前有200万条记录),并想知道是否有可能提高即席查询的性能.ad-hoc这个词在这里是关键.添加索引不是一个选项(最常见的列上已有索引).

运行简单查询以返回最近更新的100条记录:

select top 100 * from ER101_ACCT_ORDER_DTL order by er101_upd_date_iso desc
Run Code Online (Sandbox Code Playgroud)

需要几分钟.见下面的执行计划:

在此输入图像描述

表扫描的其他详细信息:

在此输入图像描述

SQL Server Execution Times:
  CPU time = 3945 ms,  elapsed time = 148524 ms.
Run Code Online (Sandbox Code Playgroud)

服务器非常强大(从内存48GB内存,24核心处理器)运行sql server 2008 r2 x64.

更新

我发现这个代码创建了一个包含1,000,000条记录的表.我想我可以SELECT TOP 100 * FROM testEnvironment ORDER BY mailAddress DESC在几台不同的服务器上运行,看看我的磁盘访问速度是否在服务器上很差.

WITH t1(N) AS (SELECT 1 UNION ALL SELECT 1),
t2(N) AS (SELECT 1 FROM t1 x, t1 y),
t3(N) AS (SELECT 1 FROM t2 x, t2 y),
Tally(N) AS (SELECT TOP 98 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

84
推荐指数
4
解决办法
22万
查看次数

Android 4.4.2 SSL握手中止

代码适用于我的Genymotion Android 4.4.4仿真器,但不适用于我正在使用的设备(4.4.2).

我已经尝试了很多"信任所有证书"的解决方法,但无济于事(我认为这不是问题,因为证书是AOK).

我想我已经识别出密码(使用桌面上的wireshark跟踪); TLS 0x00 0x1E似乎有点罕见?

知道怎么解决?

这是我的代码

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
CloseableHttpClient client = HttpClientBuilder.create().setSSLSocketFactory(sslsf).build();
String baseURL = "https://mysite.co.uk/api/";
HttpGetHC4 request = new HttpGetHC4(baseURL + "/authenticate?user=abcd&password=1234");
CloseableHttpResponse response = client.execute(request);
Run Code Online (Sandbox Code Playgroud)

而且错误;

 javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x6abff398: Failure in SSL library, usually a protocol error
 error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:744 0x684dfce0:0x00000000)
     at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:449)
     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:340)
     at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:281)
     at org.apache.http.impl.conn.HttpClientConnectionOperator.connect(HttpClientConnectionOperator.java:124)
     at org.apache.http.impl.conn.BasicHttpClientConnectionManager.connect(BasicHttpClientConnectionManager.java:322)
     at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:373)
     at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:225)
     at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195)
     at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:86)
     at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
     at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:178)
     at …
Run Code Online (Sandbox Code Playgroud)

java ssl android

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

使用SMTP作为IP地址发送邮件时,无法解析远程名称

MailMessage message = new MailMessage();
message.Subject = "test";
message.Body = "test";
message.To.Add("test@gmail.com");
message.From = new MailAddress("bob@internalhost.com");
SmtpClient smtp = new SmtpClient();
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Host = "172.22.0.20";
smtp.Port = 25;
smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)

知道为什么我可能会收到错误

无法解析远程名称.

显然,由于我已经指定了IP地址,因此无需解析.我可以在端口25上ping IP甚至telnet并成功发送电子邮件.但是,我无法发送电子邮件.

我跑了一个wireshark跟踪,看起来没有任何流量发送到172.22.0.20

.net c# windows smtpclient

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

在没有循环的SQL中删除特殊字符?

有没有办法从SQL服务器中的字符串/字段中删除特殊字符(只留下字母数字)而没有循环/自定义函数?

到目前为止,我提出的最好的是:

Create Function [dbo].[strip_special](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
    While PatIndex('%[^a-z0-9]%', @Temp) > 0
        Set @Temp = Stuff(@Temp, PatIndex('%[^a-z0-9]%', @Temp), 1, '')
    Return @TEmp
End
Run Code Online (Sandbox Code Playgroud)

在某些服务器上,我没有创建用户定义函数的权限,所以我希望能够在没有的情况下实现相同的结果.我也担心循环的效率/性能(虽然我猜即使内置函数/方法本身也可能使用循环).

谢谢

sql t-sql sql-server

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

Android模拟器所需文件

我想分享我的一个Android模拟器,并试图弄清楚需要什么.

我已复制我的c:\users\me\appdata\local\android\sdk文件夹,但平台文件夹除外,似乎不需要.随我的.avd文件夹和相应的.ini.虽然这个工作很大,我想看看我是否可以减少它.

我得到的印象是只需要system-images文件夹来创建一个新的虚拟机,但出于某种原因,如果我尝试启动我avd没有所需的系统映像,我会收到错误.为什么需要系统映像?

我的文件是什么.avd;

  • userdata.img
  • userdata-qemu.img
  • userdata-qemu.img.qcow2

我可以删除sdk文件夹中的其他文件夹吗?

在几个实例中,我的虚拟机似乎已重置(即所有配置和已安装的应用程序都已消失).是否有任何明显的事件可能导致这种情况?

android android-emulator

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

为什么索引要在统计中显示高扫描计数?

没有太多细节,我有一个查询使用所有聚集和非聚集索引搜索产生执行计划(听起来很有希望).不幸的是,查询表现不佳,我很难理解为什么.

我正在使用set statistics io on并且可以看到其中一个表产生了大量扫描和逻辑/物理读取:

SET statistics io ON

go

    SELECT order_number,
           audit_id,
           orderadmission_net_paid_delta / 100.00,
           'Admission',
           orderadmission_net_paid_delta / 100.00,
           performance_gl_description1,
           section_data1,
           performance_gl_code,
           price_type_data1,
           year(performance_start_date),
           month(performance_start_date),
           paymentmethod_type,
           paymentmethod_name,
           ''
    FROM   JCRProdReplication.dbo.ts_audit WITH (NOLOCK)
           JOIN JCRProdReplication.dbo.ts_order_admission WITH (NOLOCK)
             ON orderadmission_audit_id = audit_id
           LEFT JOIN JCRProdReplication.dbo.ts_order WITH (NOLOCK)
             ON order_id = orderadmission_order_id
           LEFT JOIN JCRProdReplication.dbo.ts_performance WITH (NOLOCK)
             ON performance_id = orderadmission_performance_id
           LEFT JOIN JCRProdReplication.dbo.ts_seat WITH (NOLOCK)
             ON seat_id = orderadmission_seat_id
           LEFT JOIN JCRProdReplication.dbo.ts_section WITH (NOLOCK)
             ON section_id = seat_section_id
           LEFT …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

如何序列化(以逗号分隔的列表)SQL行

我目前有一个视图列的行:

ID, Name

我想添加第三列Properties,其中必须包含以逗号分隔的属性列表.我可以从连接表中获取属性,但是当前连接将为每个属性返回一个单独的行.为逗号分隔列表提取单行的最佳方法是什么?

在过去,我认为我已经使用了带有游标的用户定义函数.如果我能在没有UDF的情况下做到这一点,那就太棒了,但我不是百分百肯定的.如果没有,我确信我可以用更智能的UDF去除光标.

sql sql-server

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

左连接到两个内连接表

我敢肯定我可能只是在忘记或过于复杂......但这是我的情景:

日历表(每年的每一天的记录)

iso_date
01/01/01
02/01/01
03/01/01
04/01/01
Run Code Online (Sandbox Code Playgroud)

场地表(每个场地的记录)

venue
All London
London Tower
London Bridge
Millenium Bridge
Run Code Online (Sandbox Code Playgroud)

复合场地桌(参考相关场地)

master_venue,     child_venue
All London,       All London
All London,       London Tower
All London,       London Bridge
All London,       Millenium Bridge
London Tower,     London Tower
London Bridge,    London Bridge
Millenium Bridge, Millenium Bridge
Run Code Online (Sandbox Code Playgroud)

预订表(每次预订的记录,包括日期和地点)

iso_date, venue,            event
01/01/01, All London,       1
02/01/01, London Tower,     2
02/01/01, Millenium Bridge, 3
04/01/01, London Bridge,    4
Run Code Online (Sandbox Code Playgroud)

事件表

event, status
1,     1
2,     0
3,     1
4,     1
Run Code Online (Sandbox Code Playgroud)

现在我想加入这些表格,这样我每天都可以获得每个场地的记录,无论是否已经预订.如果场地有预订,我只想在事件状态为1时看到它. …

sql sql-server

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

SQL Server报告服务器SSRS 2005/2008 R2之间的差异?

有一个搜索,只发现SSRS 2005和2008之间的差异列出2005年和2008年之间的"唯一"差异是tablix(表格+矩阵)控制的引入.

还有别的吗?那么2008年 - > 2008年R2?

谢谢

reportingservices-2005 reporting-services ssrs-2008

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

使用值从.net hastable中删除项目

有没有办法不循环遍历整个哈希表来删除具有指定值的键值对?

如果没有 - 是否有更好的类型我可以使用哪个允许我这样做?

这里有一些关于我正在做什么的背景知识.我确定我过于复杂,而且有更好的方法......

我有一个键/值列表,其中键是"源"电子表格中的列名称,值是"目标"系统中的字段名称.

当我遍历"源"中的列并匹配哈希表中的键时,我可以删除对.

完成后,"源"中可能有列,哈希表中没有匹配的键.用户可以通过选择其中一个剩余值来覆盖它.

这是我需要从哈希表中删除该键/值的地方.

.net c# hashtable

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