我正在运行SQL Server,并且有一个用户配置文件表,其中包含用户个人信息和配置文件图片的列。
设置项目时,系统提示我将配置文件图像存储在数据库中。这似乎还可以,并且工作正常,但是现在我正在处理真实数据并查询更多行,这些数据需要一生的时间才能返回。
要仅提取个人数据,查询将花费一秒钟。要拉出图像,我需要6秒钟以上的时间以获得5条记录。
该列的类型为varchar(max)
,数据大小各不相同。这是数据长度的示例:
28171
4925543
144881
140455
25955
630515
439299
1700483
1089659
1412159
6003
4295935
有没有一种方法可以优化我对这些数据的获取?我的查询如下:
SELECT *
FROM userProfile
ORDER BY id
由于数据长度,无法建立索引。存储前我应该考虑压缩图像吗?
答案 0 :(得分:0)
如果花费时间返回数据。五秒钟似乎有点长,只有几兆字节,但是有开销。
如果检索时间非常重要,我建议压缩数据。您可能比读取未压缩的数据更快地检索和解压缩数据。
也就是说,除非特别需要image列,否则不应使用select *
。如果您在不需要的地方使用它,可以提高性能。如果您想为其他用户保存此内容,可以添加不包含图片列的视图,并鼓励他们使用该视图。
答案 1 :(得分:0)
SELECT *
FROM userProfile
ORDER BY id
请勿使用*
,为什么要使用order by
?您可以order by
AT UI代码