我想比较一个select语句的where子句,两个变量类型为char。数据库表的变量长度为40,比较变量为32.是否可以在where条件下仅比较数据库变量的前32个字符?什么时候我可以做到这一点?如果不可能,我的替代方案是什么?该数据库有超过300.000个条目,因此我无法将它们全部循环到内部表中。
答案 0 :(得分:3)
欢迎,小程序员。 首先我想说,并指出这些(如果你不感兴趣,请向下滚动到我建议的答案):
该数据库有超过300.000个条目。 你的意思是,数据表,你想要选择,对吧? 整个数据库的300.000个条目是花生。
我假设表中有300.000个条目。你不能循环?你当然可以。 这些时间结束了,老兄,今天300.000一直是不断增长的标准。 你知道吗,为什么云,大数据,hana,内存数据存储等都在发展?
但是在这种情况下(并且我理解,循环更多数据并不是很好),这是必要的)有一些步骤可以在全表扫描后缩小数据。 让我们先处理这个词。
<强> 1。避免全表扫描。无论如何。
你总是要看,以获得一些where参数 正确定义您的条件。主要有一些价值观 用作条件。检查现有索引的可用性。
<强> 2。 OMIT SELECTING * from from。
有时两个选择可能比一个更好,特别是当时 数据越来越大。对于这种情况,创建一个类型很有用 对于内部表,它只保存记录的键,其中 不是通过键/外键选择的。另外你可以添加 where-clause-params as fields,或者在你的例子中,这些字符字段(in 一般字段,将用于缩小结果范围)。 然后在内部表中只选择那些所需的字段。
第3。使用所有数据库功能,您可以使用
这传递了RDBMS可以做的所有工作,而不是之后的工作 必须在AS上运行。聚合,没有重复,总和等......
<强> 4。你知道你的数据库吗?然后使用它的提示
与第4点类似,这会将执行传递给rdbms,resp。该 数据库计算机,其中运行优化的rdbms,这可能是可以做到的 事情更好。这应该非常谨慎使用。
<强> 5。你知道结果的大小吗?选择正确的内部表格
三件事汇集在一起:内部表的类型,结果的数量, 可用值作为&#34; read-table / loop at&#34;
的条件哈希表?最快的。他们消耗大量内存。特别
适用于大型结构。但您可以定义,如何创建它们。
一个包含许多记录的小型结构化内部表可以更快,并消耗
内存减少,然后是记录较少的大结构。这应该得到验证
在决定之前跟踪,在高流量高峰时间。
排序表?最好,如果你有一个数字键和一个小结构。 这是散列后最快的组合。
标准表?你现在想要为自己解释这个。
钥匙?如有必要,请合并,但尝试使用一个主键。
这些是性能方面的一些重要提示。
曾经,你处于这种情况,你有你的(可能是太大的结果),特别是在你的情况下,你可以删除字符串不包含where子句模式的内部表。 这是一个宏,对于类似的事情,循环会做,但我认为,它更快。 &#34; CP&#34;是包含模式,&#34; NP&#34;是为了不包含模式。 这可能会缩小结果。
答案是一系列备选方案?不!
为什么我要写这个,并将其作为答案发布?在这种情况下,没有答案,这至少是最接近被用作替代的点。
在我们的SAP环境中,我们有这样的答案:
http://scn.sap.com/thread/1786222
<强>结论:强>
创建范围表,使用&#34; CP&#34;作为选项和&#34;我&#34;分配。 将where-condition-value传递给low。 用blabla&#34;
中的&#34;执行选择