我正在使用 Teradata SQL 助手,但我有一个与下面类似的 SQL 问题。
Table_a(包含超过 5 亿行):
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Transition
app:constraintSetStart="@+id/expanded"
app:constraintSetEnd="@+id/collapsed">
<OnSwipe
app:dragDirection="dragUp"
app:touchAnchorId="@id/content"
app:touchAnchorSide="top"
app:onTouchUp="decelerate" />
</Transition>
<ConstraintSet android:id="@+id/expanded">
<Constraint
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="0dp"
android:alpha="1.0"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Constraint
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:alpha="1.0"
app:layout_constraintTop_toBottomOf="@id/image"
app:layout_constraintStart_toStartOf="parent" />
</ConstraintSet>
<ConstraintSet android:id="@+id/collapsed">
<Constraint
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="0dp"
android:alpha="0.0"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="parent" />
<Constraint
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:alpha="0.0"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</ConstraintSet>
</MotionScene>
在我的查询中,我只想选择 b 的年/月等于或大于 c/d 的行,因此在本例中,我将只得到行 id = 2。
这里的问题是列 c 是一个 smallint,d 是 byteint,而 b 是一个 date。我没有找到用 id| b | c |d
1|2021-05-03|2 020| 6
2|2019-04-22|2 019| 4
3|2018-11-15|2 018| 10
做 to_char(b,'yyyymm')
的方法,因为 c 和 d 包含空格,而 c 列可能只有一个数字(例如,如果月份在 1 月和 9 月之间,则为 6 而不是 06),所以我这样做了:
c||d
我的查询花费了很多时间,有时它会因没有更多的假脱机空间而失败(例如,即使我放了样本 10)。我想问题出在数据类型和转换中。我已经在没有转换的情况下对其进行了测试,但我遇到了同样的性能问题。