|
|
1
1
首先,如果使用联接,则此查询的外观和性能将更好:
这是保持复杂性的良好开端。然后,如果您想直接向SQL添加额外的过滤器,可以在末尾附加更多的“AND…”语句。由于所有的条件都与AND(或安全地包含在括号中)相关,因此不可能有人在这些条件之后添加一个条件,从而以某种方式撤消上面的条件——也就是说,一旦用子句的一部分限制了结果,就不能用后面的子句“取消”它,如果它与AND s串在一起。(当然,如果这些附加子句靠近用户文本输入,则必须对它们进行清理以防止SQL注入攻击。) 一般来说,数据库的过滤速度比任何其他层都快,因为在数据库上使用WHERE子句通常会使数据库避免从磁盘上读取不必要的记录,这比使用CPU所能做的任何事情都慢几个数量级。在DB上排序通常也更快,因为DB通常可以以这样的方式进行连接,即记录已经按照您希望的顺序排序。所以,从性能上来说,如果你能在数据库上做到,那就更好了。 不过,您说过性能并不是这里的关键,所以在业务逻辑中以编程方式添加过滤器可能对您很好,而且比处理SQL字符串更容易阅读。 |
|
|
2
0
很难理解这个查询,因为我必须大量滚动,因为我不知道数据库。。。 但是如果特权是“一维的”,例如管理员可以看到所有东西,高级用户可以看到的少于管理员,来宾可以看到的少于高级用户,等等:您可能可以在事件和用户中都将特权实现为整数,然后
如果您将privilegue值设置为10000(high/admin)、5000、1(lower/guest)等值,则以后可以在这两者之间添加更多级别,而不必更改所有代码。 |
|
|
3
0
使用ORM工具或使用如下参数:
|
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 1 年前 |
|
|
D_chez12 · 如果对象键值为空,则过滤掉数组中的对象 1 年前 |
|
|
ForEverNewbie · 筛选时间段在另一行时间段内的行 2 年前 |