我正在使用 sqlite3 作为数据库。数据库有一个表,它使用“名称”字段作为索引,它是一个 UTF-8 字符串。为了进行不区分大小写的比较,我添加了一个名为“name_upper”的新列,它只是“name”字段的 UTF-8 大写版本,并将其用作索引。
事实证明,“name”字段是迄今为止表中最大的字段,因此通过定义“name_upper”字段,我基本上将表的大小增加了一倍。与数据库文件所在的磁盘大小相比,数据库的大小仍然很小,但与内存大小相比,它可能会变大。
我的问题是,表的大小加倍会影响性能吗?我担心需要使用更多内存来缓存表。
另一种解决方案是定义一个新的排序函数来执行不区分大小写的 UTF-8 比较(我知道 ICU 提供了一个实现)。我不确定在这种情况下会对性能产生什么影响,因为每次比较都需要进行从小写到大写的转换。