Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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中对varchar列进行排序_Sql_Postgresql - Fatal编程技术网

在SQL中对varchar列进行排序

在SQL中对varchar列进行排序,sql,postgresql,Sql,Postgresql,我在POSTGRES数据库的活动表中有以下列: EMPLOYEE_ID integer, => unique integers DATE bigint, => stores epoch values ACTIVITY_ID varchar(10), => stores unique character values ACTIVITY_TYPE_ID integer => values 1 to 5 可能有多个具有相同日期

我在POSTGRES数据库的活动表中有以下列:

EMPLOYEE_ID integer,      => unique integers
DATE bigint,              => stores epoch values     
ACTIVITY_ID varchar(10),  => stores unique character values
ACTIVITY_TYPE_ID integer  => values 1 to 5
可能有多个具有相同日期值的记录。我的问题是哪一个更有效:

1. select * from activities order by DATE desc, ACTIVITY_ID

2. select * from activities order by DATE desc, ACTIVITY_TYPE_ID, EMPLOYEE_ID
第一个使用bigint+varchar进行排序


第二个使用bigint+integer+integer

排序就是排序就是排序。只有在两列或三列上有适当的索引时,查询才会有效

缺少这些,键的大小所造成的差异相对较小。所有钥匙尺寸相同会带来一点效率提升。而且,如果字符串字段的长度为数百字节,那么它将产生影响


你应该在你的数据和报告上都尝试一下。我不会担心性能上的差异。一定还有其他更重要的事情要考虑。

在你的数据上尝试它们,获得两者的解释输出,并用这些输出更新问题;按活动id排序在功能上是否更符合逻辑?根据内部有用的ID进行排序对于依赖于您的用例和需求的人来说通常是没有用的。问问你的用户!