另一种方式就是纵向分开A表。
就是说把A表分为AA和AB两个表。依据就是AA里面是小的,经常被查询用到的列,比如日期,ID。AB里面是大的,不经常查询的列比如text,xml,file 等。AA和AB通过外键联系。这样你的查询就不用跨很多分区,结果会快很多。
还有一个办法是把所有用到的列一起建一个索引,肯定会加快查询,但这种方式会增加很多硬盘开销,同时降低插入和更改的效率。
一句题外话:
数据库管理中最好不要轻易做这么大的改动。这个查询可能很慢,但如果用户不是经常查或者已经习惯了,不如不改。
我来回答,其实很简单的,分四步走:一,先在SQL里创建两个数据库A和B。
二,还原数据库,用A.BAK还原到数据库A,用B.BAK还原到数据库B。(这个你会吧?)
三,数据导出,(也可以导入)。可以从A导出到B,也可以从B导出到A。
如果从A导出到B。选择数据库A,点右键,选所有任务>数据导出。出现一个新的窗口。选择数据源也就是数据库A,再选择导出的目的地,也就是数据库B。之后再选择第一个选项,(复制视图和表),再选择所有的表不要选视图。(那些有眼镜的不要选。)然后一直下一步直到完成。
四,备份数据库B,备份的数据库文件就等于你要的C.BAK。
以上四步,第三步最为关键,有几种方法。也有很多选项,可要看清楚哟。
主外键的存在是依托两个实体之间的关系而存在的;一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?
因为,你想一想班级表内如果放学生那么记录可能就是这样:
1班ID
1班
xx同学id
1班ID
1班
xx同学id
..
这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;
下面简单给你讲下大概建成的表结构
--建班级表
create
table
class(
classid
int
primary
key,--定义班级ID为主键
classname
varchar(15)
)
--建学生表
create
table
students(
studentid
int
primary
key,--定义学生ID为主键
classid
int
,--外键值,跟班级表classid
属性类型相同
stuname
varchar(20),--学生姓名
---定义外键
foreign
key(classid)
references
class(classid)
--本表classid是基于class表classid的外键
)
---------
如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:
--在班级表为空的情况往学生表插入一条记录是不允许的:
insert
into
students(studentid,classid,stuname)values(1,1,'小明')
系统会抛出异常提示主键表班级表内班级ID不存在这样是不允许插入的;
必须要先往班级表内插入一条记录:
insert
into
class(classid,classname)values(1,'一班')
后才能执行插入前面一条往学生表插入信息的语句..
--------------可了解一些了?真累啊.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)