一、SQLServer 通用索引字段
1、Primary Key's 主键
2、Foreign Key's 外键
3、支持SELECT、INSERT、UPDATE和DELETE命令的字段 :
(1)、INNER JOIN
(2)、RIGHT | LEFT OUTER JOIN
(3)、WHERE
(4)、ORDER BY
(5)、GROUP BY
(6)、HAVING
二、创建索引的其他因素(主要因素都因为索引是数据表外部独立的组织,当表中的数据发生变化时,索引也需要同步维护,这将影响数据表的更新操作的效率):
1、数据量——如果记录行数很少,不必建立索引就能快速访问
2、数据变动频率——如果表中的数据变动频繁(INSERT、UPDATE和DELETE操作)每次变动,索引都要增加维护的开销,我们建立索引应该考虑到数据变动的趋势,例如:bbs中的发帖,这张表的新数据是按照创建时间排列的,所以按照创建时间建立的索引,在添加新数据时,维护索引的开销是最低的
3、尽量创建瘦索引——如果你不能确定索引数量,那么就每个索引用一个字段就好了,除非频繁的对某一组字段进行查询,否则没有必要建立胖索引
......
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
//显示数据示例
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建表及插入数据
//use jwcrm
//create table userinfo(username char(10),userpwd char(10))
//insert into userInfo values('潘万飞','123456')
//insert into userInfo values('李世明','678910')
//select * from userinfo
&nbs ......
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
//显示数据示例
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建表及插入数据
//use jwcrm
//create table userinfo(username char(10),userpwd char(10))
//insert into userInfo values('潘万飞','123456')
//insert into userInfo values('李世明','678910')
//select * from userinfo
&nbs ......
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
//显示数据示例
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//创建表及插入数据
//use jwcrm
//create table userinfo(username char(10),userpwd char(10))
//insert into userInfo values('潘万飞','123456')
//insert into userInfo values('李世明','678910')
//select * from userinfo
&nbs ......
sqlserver 2000排名函数
名次生成方式1,重复时合并名次
SELECT * , Place=(SELECT COUNT(DISTINCT Score) +1 from jh03 WHERE Score >= a.Score)
from jh03 a
ORDER BY Place
名次生成方式2 , 重复时保留名次空缺
SELECT * , Place=(SELECT COUNT(Score) from jh03 WHERE Score > a.Score) + 1
from jh03 a
ORDER BY Place
......
SQL-Structured Query Language
--(开启SQL服务:net start mssqlserver)
--(在命令行中输入'sqlwb'命令可打开SQL管理器 )
--(如果要执行多条命令中的一条,鼠标选定后再按F5执行)
create database sales --创建一个名为sales的数据库
on
(
name='sales_data',
filename='d:\sales_data.mdf',
size=10,
maxsize=50,
filegrowth=5
)
log on
(
name='sales_log',
filename='d:\sales_log.ldf',
size=10,
maxsize=50,
filegrowth=5
)
drop database sales --删除所创建的数据库
sp_helpdb sales --查看 ......
1、查看原数据库备份情况:RESTORE FILELISTONLY from DISK = 'c:\NMGCNC-BABY_2009-4-1.dat' WITH NOUNLOAD, FILE = 1
2、进行数据库还原:
restore database babyAndwed from DISK = 'c:\NMGCNC-BABY_2009-4-1.dat' with move 'babyAndwed_Data' to
'c:\NMGCNC-BABY_Data.MDF',move 'babyAndwed_Log' to 'c:\NMGCNC-BABY_Log.LDF' ......
索引分为两大类:聚集索引和非聚集索引
一、聚集索引
当数据表中的一列被确定为主键后,SQLServer会自动为它建立聚集索引,因为聚集索引是标识每个记录行的键,所以它将被应用到每个查询中.
二、非聚集索引
非聚集索引的情况就比较复杂了,因为它是相对于表独立组织的,在SQLServer中有单独的结构来存储非聚集索引.
有一点是要注意的,不要代替查询优化器去指定某个索引,DBA应该想办法避免优化器不使用索引进行查询:
1、高碎片率
当索引碎片率超过40%的时候,优化器会放弃使用索引,因为在碎片率如此高的索引中扫描数据还不如直接到表中去扫描.
DBA应该常常监视索引碎片率,当达到30%的时候就要考虑重新组织索引
2、唯一性
如果一个索引不是唯一索引,那么优化器会认为直接到数据表中扫描比使用这个索引的效率要高
3、查询中使用了函数
当查询中使用了函数时,在该列上建立的索引是不会被使用的.
例如:col建立了索引,但是在查询中使用了 convert(nvarchar,col)=’test’,这时查询优化器不会使用该索引
4、查询错误的字段
如果建立组合字段的索引,那么只有当第一个列被查询使用时,该索引才会被使用
例如:建立一个索引(col1,col2,col3),当查询中使用col2= ......