易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 随机抽样的总结

对于SQL 随机抽样我们常想到的就是newid(),但如果对于一个在百万、千万甚至更大海量数据表中抽样的话,简单的newid(),其性能,效率就不是很理想了。所以在这里有必要讨论一下,择优而用。
 
long_goods是一个百万数据的表,Ctrl+L执行以下语句:
 
--id_index是我为主键加的一个非聚焦索引
SELECT top 1  * from long_goods order by newid()
--查询开销 43%
SELECT top 1  * from long_goods with(index=id_index) order by newid()
--查询开销 54%
select top 1 * from long_goods where id=(select top 1 id from long_goods order by newid())
--查询开销 1%
select top 1 * from long_goods where id=(select top 1 id from long_goods with(index=id_index) order by newid())
--查询开销 1%
 
虽然第三个与第四个的开销是一样,但实际应该是第四种优于第三种。
 
如果MS SQL2005升级到支持 TABLESAMPLE 的话,以下语句的抽样执行效率可为最优的
SELECT * from long_goods TABLESAMPLE SYSTEM (10 PERCENT)
 
呵呵..下班了,至于其中原因,下次有空再续.


相关文档:

sql语句 时间格式转换(Convert用法) 参考

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varch ......

SQL Server 2008 Resource Governor

 
一、问题引出:
当某一台SQL Server实例上创建有多个数据库的时候,如果某一个数据库过度占有系统资源,往往会导致其它数据库性能受到严重影响,甚至大大降低整个数据库的性能。
这种情况下,如果有一种技术或者方法可以限制数据库资源的占有量,给与一个峰值,从而给与其它的数据库足够的资源。那么这个问题就可 ......

讨论 并发执行SQL时的更新丢失,如何解决这种问题

    最近遇到一个问题,在操作SQL更新账户余额时,常常发现更新后的余额与实际的不相符,马上想到了是不是存在并发更新,一查果然如此。之前也曾遇到过这样的问题,当时没太在意,现在是解决的时候了。用Mysql模拟了一下这个过程:创建两张表,paralltable和parallalter,每次根据paratable表更新parallalte ......

PL/SQL 控制结构

在PL/SQL中引入了控制结构,包括选择结构,循环结构和跳转结构
一 选择结构
1,IF 语句
 
    在PL/SQL中,选择结构可以通过if语句来实现,也可以通过Case语句(oracle9i中)
    利用if语句实现选择控制的语法为:
     if condition1 then statements1 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号