我有一个sqlite数据库,其中包含一个包含大折线坐标的表(大约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
现在,field _line是SQLite Android数据库上的TEXT类型。在我的类DAO中,我将此字符串解析为ArrayList,这是一个点列表。
我的问题是,建议将行数据类型从TEXT更改为BLOB?会提高性能吗?
在数据库本身中,TEXT和BLOB值以完全相同的方式存储。唯一的区别是报告给应用程序的类型,或built-in string functions的行为。
但是,Android框架将自动在数据库编码(UTF-8)和Java字符串编码(UTF-16)之间转换TEXT值。 BLOB值不会发生这种情况。
如果将值存储为blob,则可以使用与存储它们的格式完全相同的格式从数据库中读取它们,但是您可能会冒这种格式为UTF-16,这会浪费大量空间。