我用VC++做了个程序,数据库用的是MySQL.数据表其中一个字段是MEDIUMBLOB类型的,用来存放图片文件。基本上每张图片都在300K左右大小。数据库里面有4000张图片图片的时候。我搜索图片的时候那个速度啊真是比蜗牛还慢。大侠们留下点想法嘛。留想法的都给分哦。随便留下点什么嘛。

解决方案 »

  1.   

    为什么不把图片放在文件夹里,然后数据库只存放图片链接?
    有没有用INDEX索引?
      

  2.   

    你是如何搜索的?
    你的SELECT语句是什么? 表中的索引结构是什么样?问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
        
      

  3.   

    表结构很简单,主要就是图片编号(ID)(主键-自动增长),图片名称(image_name),图片上传时间(add_time),图片数据(image_data)。
    我的搜索语句是SELECT image_data from image_table where image_name = '图片名称'
      

  4.   

    图片存储到本地这个方案数据库只存储路径的话暂时先不说,想先听听你们对MYSQL存图片的看法
      

  5.   

    image_name上肯定要建索引。
    当图片大部分大小超过64K,建议采用本地文件,数据库中存路径来实现。
    当图片数量超过100000,建议对本地文件路径进行分级整理,甚至多文件合并。
      

  6.   

    这个应该包含了取数据的时间(blob数据读取也费时间)
      

  7.   

    你用这个语句试试:
    SELECT 1 from image_table where image_name = '图片名称'
    看看只是简单的查询一个条件花多长时间?BLOB本来就容易导致多次IO,加上网络传输,慢也不足为奇。
      

  8.   

    SELECT 1 from image_table where image_name = '图片名称'  花费的时间也就0.02s,
    找图片的时间要7s左右。难道说MYSQL真的不能大量存储图片吗?
      

  9.   

    你的一个图片有多大?显然时间花在读取 BLOB数据上了。你可以再试试select 图片编号(ID)(主键-自动增长),图片名称(image_name),图片上传时间(add_time) from image_table   image_name = '图片名称'  
      

  10.   

    我已经比对过select image_path(图片存储绝对路径) from image_table where image_name = '图片文件名'
    select image_data  from image_table where image_name = '图片文件名'图片文件名一样,时间差别好大。应该就是读取BLOB耗费的时间。存储的图片越多读取图片数据就越慢。检索到记录的时间应该是挺短的
      

  11.   

    我打算换SQL SERVER 数据库了。感觉MYSQL确实不适合存大量图片。
      

  12.   


    且慢。你会发现SQL SERVER更不满足你的要求。
      

  13.   

    而且我听说SQL SERVER在存图片这方面性能还不错。
      

  14.   

    用SQL SERVER数据库确实比MYSQL数据库存图片的效率高啊。初步感觉还是可以呢。唉,解决了我一个大问题啊。
      

  15.   

    用SQL SERVER数据库确实比MYSQL数据库存图片的效率高啊。-------sqlserver有一个数据类型,正是靠它才得以让我们存储图片很快,可以通过select方式选数据,在数据库层面实现select+copy图片等功能。这种数据类型说白了就是链接到文件系统的一个文件链接,在文件系统中存文件。mysql免费,当然没有这么方便的功能了(目前),在mysql世界中,是使用php来操作文件,mysql来存储文件路径(链接的)。也就是说比较原始和麻烦,各位不可不知。