Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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-索引主键-性能差异64位Int与8字符字符串_Sql_Postgresql_Sqlite_Indexing_Primary Key - Fatal编程技术网

SQL-索引主键-性能差异64位Int与8字符字符串

SQL-索引主键-性能差异64位Int与8字符字符串,sql,postgresql,sqlite,indexing,primary-key,Sql,Postgresql,Sqlite,Indexing,Primary Key,假设您设计了一个SQL表postgresql或sqlite,并且主键有两个选项: 1 64位整数自动递增,索引 2由8字节8个字符组成的字符串,其前几个字母取决于时间,因此可排序,也可编入索引 选择字符串版本会有任何性能/存储缺陷吗? 由于它们都占用8字节,并且可以按插入的时间或顺序进行索引和排序,所以对于SELECT查询,它们的速度也应该相同 选择字符串版本会有任何性能/存储缺陷吗 字符串比看起来复杂得多。例如: 字符是ASCII还是Unicode? 什么是排序规则? 数据类型是char还是v

假设您设计了一个SQL表postgresql或sqlite,并且主键有两个选项: 1 64位整数自动递增,索引 2由8字节8个字符组成的字符串,其前几个字母取决于时间,因此可排序,也可编入索引

选择字符串版本会有任何性能/存储缺陷吗? 由于它们都占用8字节,并且可以按插入的时间或顺序进行索引和排序,所以对于SELECT查询,它们的速度也应该相同

选择字符串版本会有任何性能/存储缺陷吗

字符串比看起来复杂得多。例如:

字符是ASCII还是Unicode? 什么是排序规则? 数据类型是char还是varchar? 在大多数数据库中,所有这些都会影响比较和成本。另一方面,整数很简单。它们是简单的二进制表示。当然,它们可以声明为unsigned和signed,但这是一个选项,而不是多个字符串选项


SQLite使用了一种与其他数据库和标准SQL截然不同的神秘数据类型系统,它使用值而不是列定义来存储类型。我不知道这会如何影响数据库中索引的性能。

1运行基准测试并测试自己2为什么会使事情复杂化?只需使用简单的自动递增整数。