Open SQL WHERE 不同长度字符之间的条件

Open SQL WHERE Condiition between Chars with different length

我想在 select 语句的 where 子句中比较两个类型为 char 的变量。数据库变量table的长度为40,比较变量为32,是否可以在where条件下只比较数据库变量的前32个字符?什么时候可以,我该怎么做?如果不可能,我的替代方案是什么?数据库有超过 300.000 个条目,所以我不能在内部 table.

中循环所有条目

欢迎你,小程序员。 首先我想说,并指出这些(如果您不感兴趣,请向下滚动到我的推荐答案):

数据库有超过 300.000 个条目。 你肯定是说,数据table,你要从select,对吧? 整个数据库的 300.000 个条目是花生。

我假设 table 中有 300.000 个条目。你不能循环?你当然可以。 这些时代结束了,伙计,300.000 是今天不断增长的标准。 你知道,为什么云、大数据、hana、内存数据存储等会进化吗?

但在这种情况下(据我所知,循环更多数据并不是很好,然后有必要)有一些步骤可以在完整后缩小数据-table -扫描。 让我们先来处理这个词。

1.避免完全-TABLE-扫描。只要有可能。

你总是需要查看,以获得一些 where-parameters 正确定义您的条件。主要有一些值 用作where条件。还要检查现有索引的可用性。

2。 OMIT SELECTING * from into corresponding.

有时两个 select 比一个大更好,特别是,当 数据越来越大。对于这种情况,创建一个类型很有用 对于内部 table,它只保存记录的键,它 select 不是 keys/foreign 键。此外,您还可以添加 where-clause-params 作为字段,或者在你的情况下,这些字符字段(在 一般字段,将对其进行处理以缩小结果范围)。 然后 select 只有那些需要的字段进入内部 table.

3。使用所有数据库函数,您可以使用

这将传递 RDBMS 可以完成的所有工作,而不是稍后 在 AS 上必须是 运行。聚合、无重复、求和等...

4.你知道你的数据库吗?然后使用它的提示

与第 4 点类似,这会将执行传递给 rdbms,resp。这 数据库计算机,其中优化了 rdbms 运行s,这可能可以做到 事情更好。这应该非常谨慎地使用。

5.你知道结果的大小吗?选择正确的内部table

三件事结合在一起:内部类型 table、结果数量、 用作 "read-table/loop at".

条件的可用值
  • 哈希 tables ?最快的。它们消耗大量内存。尤其 对于大型结构。但是你可以定义,你想如何创建它们。 具有许多记录的小型结构化内部 table 可以更快,并且消耗
    更少的内存,然后是一个记录更少的大结构。这个应该验证 在决定之前的跟踪,在高流量高峰时间。

  • 已排序 tables ?最好,如果你有一个数字键,和一个小结构。 这主要是散列后最快的组合。

  • 标准-tables ?你现在可能会自己解释这个。

  • 键?必要时合并,但尽量使用一个主键。

这些是性能方面的一些重要提示。

曾经,你处于这样的情况,你有你的(可能结果太大),特别是在你的情况下,你可以删除内部 table 其中字符串不包含 where 的模式条款。 这是一个宏,对于类似的事情,一个循环就可以了,但我认为,它更快。 "CP"是包含模式,"NP"是不包含模式。 这可能会缩小结果。

答案是备选方案列表?没有!

为什么我要写这个,post 把它作为答案?在没有答案的情况下,这至少是一个最近的点,可以作为替代。

在我们的 SAP 环境中,我们有这样的答案:

http://scn.sap.com/thread/1786222

结论:

创建一个范围 table,使用 "CP" 作为选项,使用 "I" 作为符号。 将 where-condition-value 传递给 low。 使用 "in blabla"

执行 select