SQL Serverの計算列での奇妙な動作
私の70-433試験の本を読んでいる間、私は機能していないと思われる何かを考えましたが、それでも機能すると信じています。パッセージは次のようなものを読みました: また、列はPERSISTEDとしてマークする必要があります。つまり、SQL Serverは、クエリで参照されるたびに計算するのではなく、計算列の式の結果をデータ行に物理的に格納します。 これから、2つのことを理解できます。 非持続計算列は、それがクエリで参照されるたびに計算されます 計算列には何も格納されないため、列にはインデックスを作成できないと想定しています。 読んだ後、以前のプロジェクトで非永続列にインデックスを作成できたので、これは少し奇妙だと思いました。 永続化されていないもののインデックスを作成するにはどうすればよいですか?これは長期的に有害です? これを証明するために、次のSQLステートメントを実行しました。 CREATE TABLE testTable ( ID INT IDENTITY(1,1) PRIMARY KEY, telephone VARCHAR(14), c_areaCode AS (SUBSTRING(telephone,0,5)), cp_areaCode AS (SUBSTRING(telephone,0,5)) PERSISTED ) INSERT INTO testTable VALUES('09823 000000'); INSERT INTO testTable VALUES('09824 000000'); INSERT INTO testTable VALUES('09825 000000'); CREATE NONCLUSTERED INDEX IX_NotPersisted ON testTable(c_areaCode); CREATE …