gpt4 book ai didi

javascript - SQL语句中的条件 VS 代码中的条件

转载 作者:行者123 更新时间:2023-12-01 03:11:21 25 4
gpt4 key购买 nike

考虑这个包含一些当天记录的 myTable:

+-----+---------------------+---------------------+
| id | start_date | end_date |
+-----+---------------------+---------------------+
| 1 | 2017-07-17 12:00:00 | 2017-07-17 14:00:00 |
| 2 | 2017-07-17 8:00:00 | 2017-07-17 11:00:00 |
| 3 | 2017-07-17 13:00:00 | 2017-07-17 15:00:00 |
+-----+---------------------+---------------------+

假设我想要获取重叠 12:00:00 -> 14:00:00 的记录(其中 12->14 是目标)。

本质上,对 (RecordStart <= TargetEnd) and (RecordEnd >= TargetStart) 有效的记录

我可以通过以下其中一项来做到这一点:

1-sql语句中的条件:

const myQuery = 
"SELECT * FROM myTable " +
"WHERE start_date <= '" + target_end_date +
"' AND '" + target_start_date + "' <= end_date";

let filtered = DbConnection.query(myQuery)

2-代码中的条件:

const myQuery =  "SELECT * FROM myTable";

let records = DbConnection.query(myQuery)

let filtered = [];
records.map((rec) => {
if(Date.parse(rec.start_date) <= Date.parse(target_end_date) && Date.parse(target_start_date) <= Date.parse(rec.end_date) )
filtered.push_back(rec)
})

我应该遵循哪种做法?

更一般地说,选择最佳实践是面向案例的吗?这是否取决于数据库有多大和/或结果有多大?还是有一些关于sql vs code的知识我还不了解?

作为一名程序员,我是否会为每个用例构建两种方法并进行测试,然后进行选择?

编辑:

考虑到每个与处理相关/查询的事情都会在 API 端发生,然后过滤(这两种方法的最终结果相同)将通过网络发送回客户端.

最佳答案

这里需要考虑两件事:

  • 尽可能提取最小、最高效的结果集
  • 尽可能少地访问数据库

几乎总是您会希望专注于提取尽可能最小、最有效的结果集。 IE。在 SQL 中执行过滤器。

唯一一次应该在代码中而不是 SQL 查询中进行过滤的情况是,如果您已经需要将整个表拉入内存并稍后进行过滤以不同方式查看它。

关于javascript - SQL语句中的条件 VS 代码中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45822906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com