在Android SQLite上的TEXT vs BLOB坐标值

时间:2015-10-22 10:56:01

标签: android performance sqlite text blob

我有一个sqlite BD,其表格包​​含一条大折线的坐标(大约2000个字符)。 BD的结构是:

CREATE TABLE "province" (
    `_id`   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    `_line` TEXT,
);

_line的值格式为:

lat1,lon1;lat2,lon2;lat3,lon3;lat4,lon4 ...

一个小例子:

28.164033,-15.709076;28.151925,-15.699463;28.134972,-15.703583;28.121650,-15.707703;28.107115,-15.704956;28.079250,-15.713196;28.067133,-15.735168

sqlite text vs blob

现在,SQLite Android数据库上的字段_line是 TEXT 类型。在我的类DAO中,我将此字符串解析为ArrayList,这是一个点列表。

我的问题是,将_line数据类型从 TEXT 更改为 BLOB ?会改善表现吗?

1 个答案:

答案 0 :(得分:9)

在数据库本身中,TEXT和BLOB值以完全相同的方式存储。唯一的区别是报告给应用程序的类型或built-in string functions的行为。

但是,Android框架会自动在数据库编码(UTF-8)和Java字符串编码(UTF-16)之间转换TEXT值。 BLOB值不会发生这种情况。

如果将值存储为blob,则可以使用与存储它们的格式完全相同的格式从数据库中读取它们,但是您可能会冒这种格式为UTF-16,这会浪费大量空间。 / p>