0
我正在使用sqlite3作为数据库。数据库有一个使用“名称”字段作为索引的表,它是一个UTF-8字符串。为了进行不区分大小写的比较,我添加了一个名为“name_upper”的新列,它只是“name”字段的UTF-8大写版本,并将其用作索引。sqlite3表大小是否会影响性能?
事实证明,“名称”字段是迄今为止表中最大的字段,所以通过定义“name_upper”字段,我基本上使表的大小加倍。与数据库文件所在的磁盘大小相比,数据库的大小仍然很小,但与内存大小相比,它可能会变大。
我的问题是,表格的大小是否会影响性能?我担心需要更多内存来缓存表格。
另一种解决方案是定义一个执行不区分大小写的UTF-8比较的新归类函数(我知道ICU提供了一个实现)。我不确定那种情况下对性能的影响是什么,因为每次比较都需要做从小写到大写的转换。
'name_upper'只是多余的!为什么不直接进行不区分大小写的比较而不是添加新列?关于SQLite性能,这里是基准报告(它们是古老的,但你有一个想法)http://www.sqlite.org/speed.html。如果'name'是你的表唯一索引,你可能想考虑为索引设置一些'int'列。 – omggs