PostgreSQL-Array-Index-Normalisierung: ab 1
PostgreSQL-Array-Indizes können bei jedem Wert beginnen. Array-Operationen können jedoch vereinfacht werden, indem die Indizes eindimensionaler Arrays so normalisiert werden, dass sie bei 1 beginnen. In diesem Artikel wird eine elegantere Methode der Normalisierung untersucht, die in PostgreSQL Version 9.6 eingeführt wurde.
In Versionen von PostgreSQL vor 9.6 bestand ein Ansatz darin, die Funktionen array_lower
und array_upper
zu verwenden, um einen Indexbereich anzugeben:
<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[array_lower('[5:7]={1,2,3}'::int[], 1):array_upper('[5:7]={1,2,3}'::int[], 1)]</code>
Ab PostgreSQL 9.6 hat sich jedoch eine einfachere und effizientere Methode herausgebildet: das Weglassen der unteren und oberen Grenzen des Slice-Spezifizierers. Laut Handbuch:
<code>可以省略切片指定符的下限和/或上限;缺失的边界将被替换为数组下标的下限或上限。</code>
Dies ermöglicht die Verwendung einer prägnanten Normalisierungssyntax:
<code class="language-sql">SELECT my_arr[:];</code>
Für das Array-Literal '[5:7]={1,2,3}'
können Sie beispielsweise Folgendes verwenden:
<code class="language-sql">SELECT ('[5:7]={1,2,3}'::int[])[:];</code>
Dieser Ansatz hat eine ähnliche Leistung wie der vorherige Ansatz mit der Verwendung hartcodierter maximaler Array-Indizes, ist jedoch eleganter und kann mit Arrays jeder Größe verwendet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich PostgreSQL-Array-Indizes effizient so normalisieren, dass sie bei 1 beginnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!