合作&赞助



管理员登录
用户名:
密 码:
技术文章 > 其他

数据库-杂记[转]
Description:去朋友网站 Goberl 转了一圈,好东西挖过来一起分享。
Source Url:http://www.goberl.com/archive/item68.aspx
 1.随机查询链接
SELECT TOP 10 * FROM categories
ORDER BY NEWID()

2..提高性能
    对建立了索引的列最好设置默认值,以去除is (not) null查询
    少用Join、SQL连接字符串的查询
    使用Like时,通配符不要放在句首
    用<、>代替not
    用EXITS代替IN
    用>=代替>,>2 TO >=3
    OUTER JOIN 与 INNER JOIN 的处理方式是不同的:对于 INNER JOIN 表,优化器会尝试重新排列联接顺序,而对于 OUTER JOIN 表则不会。外部表(LEFT OUTER JOIN 中的左表和 RIGHT OUTER JOIN 中的右表)将首先访问,然后才会访问内部表。这一固定的联接顺序可能会导致执行计划不能达到最优(创建索引后,inner join更具有优势)。
    使用非规范化数据库 
规范化的数据库可防止数据存在功能相关性,以便轻松、高效地更新数据库。但是,查询数据库时可能需要联接许多表来组合信息。随着联接表数目的增多,查询运行时间会大大增加。因此,规范化的数据库并不一定是最佳的选择。如果数据库适当程度地不合规范,则可以减少必须联接在一起的表的数目,而不会使更新过程过于复杂。这通常是一个很好的折衷办法。
     注意  
通常,如果有相当多的查询需要联接五个或六个以上的表,则应考虑使用非规范化数据库。 (http://msdn.microsoft.com/zh-cn/library/ms172432(SQL.90).aspx)
    与固定长度列相比,可变长度列的缺点是一些操作的效率不高。例如,如果可变长度列开始时很小,而某 UPDATE 子句使其显著增大,则可能就要重新定位记录。此外,频繁的更新会导致数据页随着时间推移变得比较零碎。因此,在数据长度变化不大并且需要频繁进行更新时,建议使用固定长度列。
    创建长度较小的行 
    使用长度较小的键 
    全文搜索性能(http://msdn.microsoft.com/zh-cn/library/ms142560(SQL.90).aspx)

3.SQL区分大小写
区分大小写:select * from table where col='semye' collate Chinese_PRC_CS_AI
不区分大小写:select * from table where col='semye' collate Chinese_PRC_CI_AI


使用时间:0.0190999507904 秒