11
回答
oracle中读取BLOB大字段比较费时
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

数据库中数据量上千万级的,需要用到大字段blob 存储了大概4.5K的数据。前提是,不存储文件路径,必须把表中的数据存储到blob字段中。

当每次去查询此字段时,一个简单的sql语句都比较费时,当不查询此字段时,速度还是比较快的。

有什么好办法解决这个问题吗?

举报
阿咪
发帖于7年前 11回/3K+阅
共有11个答案 最后回答: 7年前

引用来自#2楼“joliny”的帖子

查询的时候不查询该字段,利用主键来读取静态或者缓存缓存好的Blob大字段信息。

不太懂你的意思?主键查询是要把此大字段设置为主键?

他的意思,是select的时候不要select *,先不要查询blob的字段。把数据读出来以后,再通过其他途径来读。

引用来自#4楼“曾建凯”的帖子

他的意思,是select的时候不要select *,先不要查询blob的字段。把数据读出来以后,再通过其他途径来读。

 right。呵呵。

PHP的PDO在处理BLOB的时候,如果某个BLOB太大,也会发生内存不足的问题。

有两种解决办法:

1、采用原生Oracle连接驱动,不过Oracle默认所有字段都大写,很不爽。

2、限制BLOB的表查询,可采用主信息一个表,BLOB存另外一个表,或者列表查询的时候不查询blob字段。

引用来自#7楼“曾建凯”的帖子

PHP的PDO在处理BLOB的时候,如果某个BLOB太大,也会发生内存不足的问题。

有两种解决办法:

1、采用原生Oracle连接驱动,不过Oracle默认所有字段都大写,很不爽。

2、限制BLOB的表查询,可采用主信息一个表,BLOB存另外一个表,或者列表查询的时候不查询blob字段。

blob字段的值就是经常需要用到的存放的数据流

引用来自#8楼“阿咪”的帖子

引用来自#7楼“曾建凯”的帖子

PHP的PDO在处理BLOB的时候,如果某个BLOB太大,也会发生内存不足的问题。

有两种解决办法:

1、采用原生Oracle连接驱动,不过Oracle默认所有字段都大写,很不爽。

2、限制BLOB的表查询,可采用主信息一个表,BLOB存另外一个表,或者列表查询的时候不查询blob字段。

blob字段的值就是经常需要用到的存放的数据流

你的情况是批量查询还是单条数据查询?

如果仅仅是单条数据查询,blob并不会那么严重,是不是有其他相关的查询的导致费时的现象出现呢?

顶部