Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.databases.ms-sqlserver > #2259 > unrolled thread
| Started by | Anton Shepelev <anton.txt@g{oogle}mail.com> |
|---|---|
| First post | 2024-07-12 15:15 +0300 |
| Last post | 2024-07-15 14:27 +0300 |
| Articles | 3 — 2 participants |
Back to article view | Back to comp.databases.ms-sqlserver
No covering indices for table types? Anton Shepelev <anton.txt@g{oogle}mail.com> - 2024-07-12 15:15 +0300
Re: No covering indices for table types? Erland Sommarskog <esquel@sommarskog.se> - 2024-07-12 23:48 +0200
Re: No covering indices for table types? Anton Shepelev <anton.txt@g{oogle}mail.com> - 2024-07-15 14:27 +0300
| From | Anton Shepelev <anton.txt@g{oogle}mail.com> |
|---|---|
| Date | 2024-07-12 15:15 +0300 |
| Subject | No covering indices for table types? |
| Message-ID | <20240712151501.d23ddf433e73ae41365603cf@g{oogle}mail.com> |
Hello, all.
I wanted to create a convenient table-type for storing time
series (with possibly non-uniqe sample marks):
CREATE TYPE series_t AS TABLE
( moment DATETIME NOT NULL,
value FLOAT
)
For efficient querying and joining, I need a covering index
on the [moment] field that includes [value], but the INCLUDE
keyword does not seem to be suported:
https://learn.microsoft.com/en-us/sql/t-sql/statements/create-type-transact-sql
so that I can only create a simple non-convering column
index:
CREATE TYPE series_t AS TABLE
( moment DATETIME NOT NULL INDEX moment,
value FLOAT
)
or a compound table index for both columns:
CREATE TYPE series_t AS TABLE
( moment DATETIME NOT NULL,
value FLOAT
INDEX Main(moment, value)
)
What is best practice in cases when a covering index is
required for a tale-type?
--
() ascii ribbon campaign -- against html e-mail
/\ www.asciiribbon.org -- against proprietary attachments
[toc] | [next] | [standalone]
| From | Erland Sommarskog <esquel@sommarskog.se> |
|---|---|
| Date | 2024-07-12 23:48 +0200 |
| Message-ID | <XnsB1ADF2304F6C3Yazorman@127.0.0.1> |
| In reply to | #2259 |
Anton Shepelev (anton.txt@g{oogle}mail.com) writes:
> Hello, all.
>
> I wanted to create a convenient table-type for storing time
> series (with possibly non-uniqe sample marks):
>
> CREATE TYPE series_t AS TABLE
> ( moment DATETIME NOT NULL,
> value FLOAT
> )
>
> For efficient querying and joining, I need a covering index
> on the [moment] field that includes [value], but the INCLUDE
> keyword does not seem to be suported:
>
Starting with SQL 2019, it is:
CREATE TYPE series_t AS TABLE
( moment DATETIME NOT NULL,
value FLOAT,
INDEX Main(moment)
INCLUDE (value)
)
If you are an older version, I would suggest adding value as an index key
is the best in most situations.
I will submit an edit to the CREATE TYPE topic.
[toc] | [prev] | [next] | [standalone]
| From | Anton Shepelev <anton.txt@g{oogle}mail.com> |
|---|---|
| Date | 2024-07-15 14:27 +0300 |
| Message-ID | <20240715142708.72511985f0c9753807aa6357@g{oogle}mail.com> |
| In reply to | #2260 |
Erland Sommarskog to Anton Shepelev: > > For efficient querying and joining, I need a covering > > index on the [moment] field that includes [value], but > > the INCLUDE keyword does not seem to be suported: > > Starting with SQL 2019, it is: > > CREATE TYPE series_t AS TABLE > ( moment DATETIME NOT NULL, > value FLOAT, > INDEX Main(moment) > INCLUDE (value) > ) Glad to know MSSQL is improving, although I am using an older version. > If you are an older version, I would suggest adding value > as an index key is the best in most situations. Indeed. That's that I did. > I will submit an edit to the CREATE TYPE topic. Thank you. I myself have fixed a few of their documentation articles about .NET, including those describing the connection-string syntax. How strange that Microsoft has decidied to let the community wrote their documentation... -- () ascii ribbon campaign -- against html e-mail /\ www.asciiribbon.org -- against proprietary attachments
[toc] | [prev] | [standalone]
Back to top | Article view | comp.databases.ms-sqlserver
csiph-web