开发者社区 问答 正文

oracle中读取BLOB大字段比较费时:报错

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

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

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

展开
收起
kun坤 2020-06-06 23:45:45 725 分享 版权
1 条回答
写回答
取消 提交回答
  • 查询的时候不查询该字段,利用主键来读取静态或者缓存缓存好的Blob大字段信息。

    ######

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

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

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

    ######

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

    ######

    新建张表关联外键 保存BLOB数据,lizy load的方式  在需要的时候 在读取

    ######

    引用来自#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字段的值就是经常需要用到的存放的数据流

    ######

    在JDBC4.0中 对 BLOB 和 CLOB 功能做了增强

    ######

    新建张表关联外键 保存BLOB数据,lizy load的方式  在需要的时候 在读取

    正解!

    ######

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

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

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

    有两种解决办法:

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

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

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

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

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

    2020-06-06 23:45:50
    赞同 展开评论