数据库零散知识点

1.定义列时,尽量定义为not null类型,可以为空的列索引 内存 cpu 保存都特别麻烦。

2.在查找表时采用整数主键而避免采用基于字符串的值进行关联。

3.为标识列选择合适的数据类型非常重要。

   3.1. 当选择标识列的类型时,不仅仅需要考虑【储存类型】 还需要考虑mysql 对

      【这种类型怎么执行计算和比较】。

例如:mysql 内部使用整数储存ENUM和SET类型,比较的时候转换为字符串。

   3.2.一旦选择一种类型,要确保在所有的关联表中都使用相同的类型,类型之间要精确匹配,包括想UNSIGNED这样的属性。

   3.3.如果可能,应该尽量避免使用字符串作为标识列,因为他们很消耗空间【索引空间】,并且比数字类型慢。

         要完全避免随机的字符串,--【导致update 和 insert 语句很慢】

         3.3.1.因为插入值会随机写到索引的不同位置,导致使得insert 语句更慢。

         3.3.2.select 语句会变得很慢,因为逻辑上相邻的行会分布在磁盘和内存的不同位置。

         3.3.3随机导致缓存对所有类型的查询语句效果都很差。

4.Mysql限制了每个关联操作最多只能有61张表,如果希望查询执行的快速且并发性好,每个查询最好在12张表以内做关联。


5.范式的优点和缺点

   5.1.范式化的更新操作通常比反范式要快

   5.2 当数据较好的范式化时,就至于很少的重复数据,所以只需要修改更少的数据。

   5.3范式化的表通常更小,可以更好的放入到内存中,所以操作更快。

  范式化设计的schema的缺点通常需要关联,稍微复杂一些的查询在符合范式的schema上都可能需要至少一次关联。

  

 6.加快alter table 操作的速度

     MYSQL 的ALTER TABLE 操作的性能对于大表来说是个大问题。MYSQL执行大部分修改表结构操作的方法

    是用新的结构创建一个空表,从旧表查出所有数据插入新表,然后删除旧表


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章