数据库效率

同样的数据库表结构,同样的数据,删除以后重新批量导入,不对索引进行重建,效能是原来的1% – 2% 用DBCC REINDEX进行重新索引,得到的效率是原来的10%左右,但是无论怎么优化,再也没办法回到原来的效率。。。真他妈的诡异啊!!!抓狂了!!! 不过今天下班的时候跟Bruce学了一招,可以用一句Select语句代替一个游标,如果不对索引重建,用游标要遍历200多万条数据,select的话,只需要不到200条。。。效能立马见上下。

SQL to Select a Random Row

MySQL:[code=sql]SELECT column FROM table ORDER BY RAND() LIMIT 1[/code] PostgreSQL:[code=sql]SELECT column FROM table ORDER BY RANDOM() LIMIT 1[/code] Microsoft SQL Server:[code=sql]SELECT TOP 1 column FROM table ORDER BY NEWID() [/code] IBM DB2:[code=sql]SELECT column FROM table ORDER BY RAND() FETCH FIRST 1 ROWS ONLY[/code] Oracle:[code=sql]SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) […]

mysql取得最后插入的id

方法1: SELECT @@session.identity; 查当前会话的最后插入 id,不受其它会话干扰 方法2: SELECT LAST_INSERT_ID(); php方法: int mysql_insert_id( [resource link_identifier] )

千万级数据分页存储过程

作者:铁拳 来源:hiDotNet.com 相关:http://blog.csdn.net/Sun_Jianhua/archive/2004/07/04/33574.aspx [url=http://bbs.hidotnet.com/PostAttachment.aspx?PostID=14250&AttachmentID=452]C# 示例源代码[/url] [code=sql]/* 经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下: exec GetRecordFromPage news,newsid,10,100000 news 为 表名, newsid 为关键字段, 使用时请先对 newsid 建立索引。 */ /* 函数名称: GetRecordFromPage 函数功能: 获取指定页的数据 参数说明: @tblName 包含数据的表名 @fldName 关键字段名 @PageSize 每页记录数 @PageIndex 要获取的页码 @OrderType 排序类型, 0 – 升序, 1 – 降序 @strWhere 查询条件 (注意: 不要加 […]