sql中索引简单理解
- 外键的使用
两张表: sys_user_test (用户表) sys_type_test (性格表)
- 外键的建立
然后会出现一个设置外键的界面,一共有七列。简单介绍一下这几列的意思:
“名”: 可以不填,你一会保存成功系统会自动生成。
“字段”:就是你要把哪个键设置为外键。这里选择‘type_id’
“被引用的模式”: 外键关联的数据库。
“被引用的表”: 关联的表 这里是sys_type_test表
“被引用的字段”:关联的的字段,这里是type_id(sys_type_test )
“删除时":就是删除的时候选择的动作。这里我的选择是setNull,意思就是当关联的表删除以后,sys_user_test->type_id字段会设置为null。
“ 更新时”:就是更新的时候选择的动作。这里我的选择是CASCADE,意思就是当关联的表更新以后, sys_user_test->typeID字段会设置为级联更新。
- 示例
先查询->再删除 ->再查询
SELECT
*
FROM
sys_user_test a
LEFT JOIN sys_type_test b ON a.type_id = b.type_id
WHERE
1 =1
DELETE
FROM
sys_type_test
WHERE
type_id = 5
注意:外键关联的字段,如果父表(sys_type_test)中没有对应的值,那么数据插入到表( sys_user_test )会报错误:
- 外键建立二
配置为RESTRICT或者No Action时
当执行删除父类(sys_type_test)的数据时
DELETE
FROM
sys_type_test
WHERE
type_id = 5
表示 sys_user_test (用户表)中含有type_id为5的数据所以不能被删除
- 外键建立三
配置为CASCADE时
当执行删除父类(sys_type_test)的数据时
DELETE
FROM
sys_type_test
WHERE
type_id = 5
SELECT
*
FROM
sys_user_test a
LEFT JOIN sys_type_test b ON a.type_id = b.type_id
WHERE
1 =1
删除父类中的type_id时,sys_user_test(用户表)也会被同时删除
- 索引介绍
normal:表示普通索引
unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。
- 索引使用介绍
为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引,基本原则:
1.选择唯一性索引
2.为经常需要排序、分组和联合操作的字段建立索引
3.为常作为查询条件的字段建立索引
4.限制索引的数目
5.尽量使用数据量少的索引
6.尽量使用前缀来索引
7.删除不再使用或者很少使用的索引
8.经常更新修改的字段不要建立索引(针对mysql说,因为字段更改同时索引就要重新建立,排序,而Orcale好像是有这样的机制字段值更改了,它不立刻建立索引,排序索引,而是根据更改个数,时间段去做平衡索引这件事的)
9、不推荐在同一列建多个索引
ps:持续更新