Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql或oracle等数据库中,字符串相等查询的时间复杂度是多少?_Sql_Oracle11g - Fatal编程技术网

在sql或oracle等数据库中,字符串相等查询的时间复杂度是多少?

在sql或oracle等数据库中,字符串相等查询的时间复杂度是多少?,sql,oracle11g,Sql,Oracle11g,假设我有一个数据库,里面有字符串条目,我需要查找某个字符串,比如gamma。如果通过此查询搜索特定字符串,时间复杂度会是多少: SELECT * FROM TABLE WHERE NAME='GAMMA' 有没有更快或更有效的方法?如果我存储了字符串的SHA256,会更好吗?因为这样可以确保即使字符串很大,也会有一个固定的大小,假设字符串比较是根据字符串的长度进行的 假设只有唯一的字符串条目。这在SQL中是一个毫无意义的问题。可以通过多种不同的方式处理此查询: 进行全表扫描 对name或nam

假设我有一个数据库,里面有字符串条目,我需要查找某个字符串,比如gamma。如果通过此查询搜索特定字符串,时间复杂度会是多少:

SELECT * FROM TABLE WHERE NAME='GAMMA'
有没有更快或更有效的方法?如果我存储了字符串的SHA256,会更好吗?因为这样可以确保即使字符串很大,也会有一个固定的大小,假设字符串比较是根据字符串的长度进行的


假设只有唯一的字符串条目。

这在SQL中是一个毫无意义的问题。可以通过多种不同的方式处理此查询:

进行全表扫描 对name或name使用索引是任何索引的第一列,后跟行查找 如果名称是分区列,则执行部分表扫描 如果表是索引组织的表,则执行二进制搜索 在这些方面存在着变化和复杂性

在考虑SQL查询的性能时,通常需要考虑集合所需的I/O操作,以及特定操作的复杂性。也就是说,有些操作相当昂贵,所以有时需要考虑到这一点。相对较短字符串上的字符串比较不是这些操作之一


如果您有大字符串,那么对字符串进行散列可以是一种有用的优化,特别是在比较不同行中的字符串时。然而,它是以查询复杂性为代价的。索引通常足以执行此操作。

如果在名称上有索引,我认为是字符串的数量。在名称上有索引的确切含义是什么?这是否意味着拥有唯一的id?不,只需在表\u name column1上为字段create index\u name创建索引;您可以添加关键字UNIQUE if is a key field来了解有关索引的更多信息,请参阅我还建议您阅读oracle中的查询优化,如果您对快速可用的dbok感兴趣,可以阅读分区和索引,因此如果我对要存储的字符串进行散列并对散列进行索引,这是一个好主意,因为这样可以确保长度不变,还是索引可以为我解决这个问题?此外,哈希将如何降低查询复杂性?@SarveshKesharwani。哈希将有所帮助,但当哈希匹配时,仍然需要比较字符串,因为哈希不是100%确定的。如果你愿意接受一个非常罕见的错误等式,那么这是一个可行的解决方案。您只需记住散列其他表中的所有输入和引用。