小编Mir*_*yev的帖子

如何在T-SQL上的Union子句上获得更好的性能

我有三张桌子。每个表包含超过3M行。我运行以下代码:

SELECT * FROM 
(
    SELECT col_1, col_2, col_3, [date], 1 as type FROM table_1
    UNION
    SELECT col_1, col_2, col_3, [date], 2 as type FROM table_2 
    UNION
    SELECT col_1, col_2, col_3, [date], 3 as type FROM table_3
) AS tb 
tb.[date] BETWEEN (start_date) AND (end_date)  
ORDER BY [date] DESC OFFSET n ROWS FETCH NEXT m ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

但是,当我得到较大的日期间隔时,查询运行会变慢。例如:当我得到2019-01-01和2019-04-01间隔时,查询运行约13-14秒:

执行计划

这个结果非常糟糕。我想在1秒内得到结果。我能做什么?

sql t-sql sql-server query-performance

3
推荐指数
1
解决办法
113
查看次数

Postgres上的差异字符串

我有两个包含一和零的字符串。我想确定在同一位置有多少个字符不同。例如:

“ 0000111000000000000000000000000000000000000000000000000000000000000000000000”和“ 0000000000000010000110000111100000000000000000000000000000000000000000”

其结果是:10

这些字符串的长度总是64。

我可以使用循环遍历字符串并计算差值的循环来实现。但我想用reg exp或其他工具来做。速度对我很重要。因为我有很多数据要比较。

sql postgresql

0
推荐指数
1
解决办法
53
查看次数

标签 统计

sql ×2

postgresql ×1

query-performance ×1

sql-server ×1

t-sql ×1