SQL数据库中的字段设计
About:SQL数据库中,Index,字段类型等等直接影响整个SQL数据库的运行效率,有时候又必须考虑灵活性,所以才有这个话题:SQL数据库中的字段设计。
How:这里主要谈三个问题:
1.什么时候应该将一个属性作为单独的字段,什么时候可以打包。
2.index什么时候用
3.如何提高字段灵活性
1.什么时候应该将一个属性作为单独的字段,什么时候可以打包
作为单独的字段:
字段会被作为查询条件
字段有频繁的读写操作,尤其是写操作
打包:
字段不被经常修改
字段不会被作为查询条件
2.index什么时候用
有一个必要条件:字段必须是用来作为查询条件的,否则没有必要添加任何索引
比如:日期,ID,某个属性(年龄,分数)
下面引用一个表说明此问题:
动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序 使用 使用
返回某范围内的数据 使用 不使用
一个或极少不同值 不使用 不使用
小数目的不同值 使用 不使用
大数目的不同值 不使用 使用
频繁更新的列 不使用 使用
外键列 使用 使用
主键列 使用 使用
频繁修改索引列 不使用 使用
3.如何提高字段灵活性
可以将数据打包到一个单独的Text字段内,或者像PostgreSQL是有json和jsonb字段类型的,每次取用的时候,将数据单独解包一次,可以节约空间,同时可以提高整个字段的灵活性。