在SQL中对varchar列进行排序
我在POSTGRES数据库的活动表中有以下列:在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 可能有多个具有相同日期
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进行排序对于依赖于您的用例和需求的人来说通常是没有用的。问问你的用户!