假设我有一个具有以下结构的货币兑换表:
.data
.text
main:
# 5 parameters
li $s0, 2
li $s1, 3
li $s2, 5
li $s3, 10
li $s4, 20
addi $sp, $sp, -20 # 5 Words are 5 * 4 bytes
sw $s0, 0($sp)
sw $s1, 4($sp)
sw $s2, 8($sp)
sw $s3, 16($sp)
sw $s4, 20($sp)
jal addFiveNumbers
# free stack
addi $sp, $sp, 20
# print the result in $v0
move $a0, $v0
li $v0, 1
syscall
# terminate program
li $v0, 10
syscall
addFiveNumbers:
lw $t0, 0($sp)
lw $t1, 4($sp)
lw $t2, 8($sp)
lw $t3, 16($sp)
lw $t4, 20($sp)
add $v0, $t0, $t1
add $v0, $v0, $t2
add $v0, $v0, $t3
add $v0, $v0, $t4
jr $ra
我想查询该表中某个时间段或单个日期的货币兑换。例如,所有具有CREATE TABLE CurrencyExchanges
(
Id int,
FromCurrency uniqueidentifier,
ToCurrency uniqueidentifier,
RateDate date,
Value int
);
和RateDate >= '2019-03-27'
或 RateDate <= '2019-03-31'
和RateDate >= '2019-03-01'
的记录。请注意,它们可能重叠。现在,我知道我可以做这样的事情:
RateDate <= '2019-03-28'
但是问题是我将这些日期范围的列表传递给查询,它们可能是几个。因此,我必须在where子句中添加大约1000个SELECT *
FROM CurrencyExchanges
WHERE (RateDate >= '2019-03-27' AND RateDate <= '2019-03-31')
OR (RateDate >= '2019-03-01' AND RateDate <= '2019-03-28')
条件的列表。我担心在where子句中有1000个条件的性能如何。我想知道是否还有其他选择,例如使用OR
作为标量值,还是其他选择。
有什么想法吗?如果使用该列表的IN
条件方法,我会带来高性能的收益吗?
谢谢