|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
为了在某种程序上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。数据|数据库|索引|显现SELECT
表名=casewhena.colorder=1thend.nameelseend,
表申明=casewhena.colorder=1thenisnull(f.value,)elseend,
字段序号=a.colorder,
字段名=a.name,
标识=casewhenCOLUMNPROPERTY(a.id,a.name,IsIdentity)=1then√elseend,
主键=casewhenexists(SELECT1FROMsysobjectswherextype=PKandnamein(
SELECTnameFROMsysindexesWHEREindidin(
SELECTindidFROMsysindexkeysWHEREid=a.idANDcolid=a.colid
)))then√elseend,
范例=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,PRECISION),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,Scale),0),
同意空=casewhena.isnullable=1then√elseend,
默许值=isnull(e.text,),
字段申明=isnull(g.[value],),
索引称号=isnull(h.索引称号,),
索引按次=isnull(h.排序,)
FROMsyscolumnsa
leftjoinsystypesbona.xtype=b.xusertype
innerjoinsysobjectsdona.id=d.idandd.xtype=Uandd.namedtproperties
leftjoinsyscommentseona.cdefault=e.id
leftjoinsyspropertiesgona.id=g.idanda.colid=g.smallid
leftjoinsyspropertiesfond.id=f.idandf.smallid=0
leftjoin(--这部分是索引信息,假如要显现索引与表及字段的对应干系,能够只需此部分
select索引称号=a.name,c.id,d.colid
,排序=caseindexkey_property(c.id,b.indid,b.keyno,isdescending)
when1then降序when0then升序end
fromsysindexesa
joinsysindexkeysbona.id=b.idanda.indid=b.indid
join(--这里的感化是有多个索引时,取索引号最小的谁人
selectid,colid,indid=min(indid)fromsysindexkeys
groupbyid,colid)b1onb.id=b1.idandb.colid=b1.colidandb.indid=b1.indid
joinsysobjectsconb.id=c.idandc.xtype=Uandc.namedtproperties
joinsyscolumnsdonb.id=d.idandb.colid=d.colid
wherea.indidnotin(0,255)
)hona.id=h.idanda.colid=h.colid
--whered.name=要查询的表--假如只查询指定表,加上此前提
orderbya.id,a.colorder
上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。 |
|