如何优化我的varchar(max)列?

时间:2019-09-21 16:01:09

标签: sql sql-server

我正在运行SQL Server,并且有一个用户配置文件表,其中包含用户个人信息和配置文件图片的列。

设置项目时,系统提示我将配置文件图像存储在数据库中。这似乎还可以,并且工作正常,但是现在我正在处理真实数据并查询更多行,这些数据需要一生的时间才能返回。

要仅提取个人数据,查询将花费一秒钟。要拉出图像,我需要6秒钟以上的时间以获得5条记录。

该列的类型为varchar(max),数据大小各不相同。这是数据长度的示例:

28171
4925543
144881
140455
25955
630515
439299
1700483
1089659
1412159
6003
4295935

有没有一种方法可以优化我对这些数据的获取?我的查询如下:

SELECT * 
FROM userProfile 
ORDER BY id

由于数据长度,无法建立索引。存储前我应该考虑压缩图像吗?

2 个答案:

答案 0 :(得分:0)

如果花费时间返回数据。五秒钟似乎有点长,只有几兆字节,但是有开销。

如果检索时间非常重要,我建议压缩数据。您可能比读取未压缩的数据更快地检索和解压缩数据。

也就是说,除非特别需要image列,否则不应使用select *。如果您在不需要的地方使用它,可以提高性能。如果您想为其他用户保存此内容,可以添加不包含图片列的视图,并鼓励他们使用该视图。

答案 1 :(得分:0)

  1. 如果仍然可以退后一步。请放弃将图像存储在表格中的想法。而是将路径保存在数据库中,并将图像保存在文件夹中。这是最有效的。
  2. SELECT * FROM userProfile ORDER BY id

请勿使用*,为什么要使用order by?您可以order by AT UI代码