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