1.数据库里索引的作用
主要作用为了增开数据的查询速度,它的执行也是有一定条件的,不是加了索引就能够加快查询的效率,由于索引的创建实惠占据内存空间的,mysql中通过Explain Select来查看索引的扫描次数。情况如下:
以下不适合加索引:
1:如果每次都需要取到所有表记录,无论如何都必须进行全表扫描了,那么是否加索引也没有意义了。
2、对非唯一的字段,例如“性别”这种大量重复值的字段,增加索引也没有什么意义。
3、对于记录比较少的表,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存储空间的,而且有个致命缺点是对于update、insert、 delete的每次执行,字段的索引都必须重新更新保存
2.什么是数据库的事务
事物就是为了保证原有事物的完整性和一致性,通过一定的条件规定该事物的可靠性和安全性(如数据库中的事物)。
A:原子性:一个事物是不可再分的工作单位,该事物要么成功要么失败。
B:一致性:事物必须是使数据库从另外一个一致性状态到另一个一致性状态,与原子性密切相关。
C:持久性:指一个事物一旦提交后对数据库中数据的改变应该是永久不变的。
D:隔离性:一个事物的执行不能够被其他事物所干扰。
3.数据库里的字段约束有哪些,各有什么作用
1.主键约束:实现实体的完整性(PK:主键),值唯一,不能为空,且可以自动递增
2.外键约束:用于多表之间的查询该表组建作为另外张表的外键建立标语标志就的关系(FK)
3.非空约束:(NOT NULL)保证该字段的内容不能为空null
4.唯一约束:列表的唯一性约束(UNIQUE)
5.检查约束:检查列的值是否满足一个boolean表达式(CHECK)
6.默认约束:给指定的字段可以设置默认值,不设置值时使用默认值而不是null
4.数据库优化的方案有哪些
(1)查询时,能不用* 就不用,尽量写全字段名。
(2)索引不是越多越好,每个表控制在6个索引以内。范围where条件的情况下,索引不起作用,比如where value<100
(3)大部分情况连接效率远大于子查询,但是有例外。当你对连接查询的效率都感到不能接受的时候可以试试用子查询,虽然大部分情况下你会更失望,但总有碰到惊喜的时候不是么…
(4)多用explain 和 profile分析查询语句
(5)有时候可以1条大的SQL可以分成几个小SQL顺序执行,分了吧,速度会快很多。
(6)每隔一段时间用alter table table_name engine=innodb;优化表
(7)连接时注意:小表 jion 大表的原则
(8)学会用explain 和 profile判断是什么原因使你的SQL慢
//