数据库中存储二进制文件的查询效率问题
一般数据库中都有支持二进制文件类型,比如Oracle中BLOB字段。这种数据通常都很大。现在完全不考虑在数据库中存URL的那种方式。如果把这个字段放在一张表中,而这张表中...
一般数据库中都有支持二进制文件类型,比如Oracle中BLOB字段。这种数据通常都很大。现在完全不考虑在数据库中存URL的那种方式。如果把这个字段放在一张表中,而这张表中亦有其他字段。这样在查询数据库的的时候会出现效率问题,所以有人提议把这个字段分出去另建一张表,和这张表有相同的关键字,这样在不需要直接查询这个字段时候,可以避开该字段,从而提高查询效率。我想如果不把那个字段分出去,如果直接使用select * from table1的方式固然会慢,因为把那个字段也作为了查询目标。试想如果select 字段1,字段2,字段3 from table1,没有把那个字段作为查询目标,查询效率也会很慢吗?希望专业一点的人来回答这个问题,不要凭感觉说,因为这设计到数据库内部的存储方式(如果每个字段用指针来访问,应该没有效率问题),非常感谢!
展开
1个回答
2013-07-19
展开全部
你所谓的二进制数据文件针对的应该是大对象,一般而言,不会使用到这种存储方式。不过说查询效率,在对大对象进行查询时,像ORACLE,就是给数据文件增加了一个头,用以查询时的定位。而对于大数据的文本文件,比如CLOB,它提供了其他的方式让你来进行数据查询。而你所说的存在其他的字段,那么,如果你存储的是文本文件而非音频视频的话,建议你采用CLOB而非BLOB……另外,就查询效率而言,没有什么固定的方式是最好的,只有针对你的应用,采用最合适的数据库架构才是最优的。在查询效率这点上,建议你看看数据库的簇集,索引,分区/多文件组(oracle是分区,sql server就是多文件组了),这些如果使用恰当的话,可以提高查询效率……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询