SQL Server MYSQL 对外键建立索引的必要性
2014-10-17 17:24
417 查看
背景:
大家知道在定义外键时,都会给出on delete ..... on update .....;
这里指定的就是当主表的列发生变化时,从表的列要用怎么样的变化去迎合。对从表中的外键,建立索引的价值就在这里,
当主表的主键发生变化时,这就要把变化传播到从表,首先要找到从表中的行才行啊。想一想如果没有索引,就要对从表
进行scan,如果有索引就可以对表进行index seek;这就可以大大的提高速度。
然、
如果我们是向从表插入数据,外键约束会增检查主表,也就是说会对主表加锁。有锁的地方就有可能死锁。
大家知道在定义外键时,都会给出on delete ..... on update .....;
这里指定的就是当主表的列发生变化时,从表的列要用怎么样的变化去迎合。对从表中的外键,建立索引的价值就在这里,
当主表的主键发生变化时,这就要把变化传播到从表,首先要找到从表中的行才行啊。想一想如果没有索引,就要对从表
进行scan,如果有索引就可以对表进行index seek;这就可以大大的提高速度。
然、
如果我们是向从表插入数据,外键约束会增检查主表,也就是说会对主表加锁。有锁的地方就有可能死锁。
相关文章推荐
- mysql建立不上外键,sql语句一运行完就会生成一条索引,但是外键却建不上
- 《MS SQL Server 2000管理员手册》系列——17. 建立与使用索引
- mysql 建立索引(sql 建索引)
- 在SQL Server Management Studio 中建立外键约束
- MySQL 新建数据库、建立索引、建立外键
- SQL Server中建立外键的方法
- mysql给创建的外键自动建立索引吗?
- 【MySQL】基于MySQL的SQL优化(五)——建立索引优化SQL
- SQL SERVER中建立索引及引用
- MySql SqlServer Sqlite中关于索引的创建
- Java--批量插入更新在一条sql里解决-mybatis-mysql-联合主键(建立唯一索引)
- MySQL、Oracle、MS SQLserver限制查询所返回的行数
- 将mysql数据导入到MS Sql Server中
- [SQL]MySql myisam引擎不支持外键
- Mysql建立索引,找出重复纪录,删除重复的纪录,ultraedit使用小技巧
- 如何判断SQL SERVER中的某个数据库中的某个表是否有索引,并将索引名称显示出来?
- 将mysql数据导入到MS Sql Server中
- MS SQL Server 中如何实现一对多外键的级联更新
- MS SQL SERVER 2005全文索引
- Migrate Mysql to SQL Server 2005