假设我有一个包含字符串条目的数据库,我需要查找某个字符串,比如“gamma”。如果我通过此查询搜索特定字符串,那么时间复杂度会是多少:
SELECT * FROM TABLE WHERE NAME='GAMMA'
有更快或更有效的方法吗?如果我存储字符串的SHA256会更好吗,因为即使字符串很大也会确保固定大小(假设字符串比较是根据O(字符串的长度)发生的?
假设只有唯一的字符串条目。
答案 0 :(得分:1)
这在SQL中是一个非常无意义的问题。可以通过多种不同方式处理此查询:
(name)
或名称上使用索引是任何索引的第一列,后跟行查找name
是分区列,则执行部分表扫描这些变化和复杂性。
在考虑SQL查询的性能时,通常需要考虑集合所需的I / O操作,以及特定操作的复杂性。也就是说,有些操作非常昂贵,所以有时你需要考虑到这一点。相对较短的字符串上的字符串比较不是这些操作之一。
如果你有大字符串,那么散列字符串可能是一个有用的优化 - 特别是对于比较不同行中的字符串。但是,它以查询复杂性为代价。索引通常足以用于此操作。