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