在最好在SQL Server中使用文本字段之前,nvarchar字段需要多长时间?将一个或另一个用于可能会或可能不会被查询的文本内容的一般指示是什么?
我们有一个数据库表,有大约200,000条记录.其中包括3个ntext列,其中包含长度为4000-70000的字符串数据.但桌面上的一个选择只需要1分钟以上的时间来返回数据.甚至使用where条件和索引来为条件选择12000条记录需要40秒.
所以我们决定将这些数据类型更改为nvarchar(max),但仍然没有注意到主要区别,因为它会将数据存储在行之外,因为它太长了.有什么更好的方法可以提高我的表的性能?
我需要为该nvarchar列排序。问题是该列没有相同的条目模式,该列的某些行的示例是
12
9
TEF
78F
T2R
Run Code Online (Sandbox Code Playgroud)
如何按 order By 子句对此列进行排序?我唯一感到宽慰的是,该列仅包含数字和字母数字字符。
我有这个代码:
DECLARE @StartDate nvarchar
SET @StartDate='22/10/2014'
SELECT CAST (@StartDate as datetime)
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
从字符串转换日期和/或时间时转换失败.
任何人都可以提出更好的方法/至少没有错误的方法来做到这一点.
创建表:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[StringsTest](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Value] [nvarchar](max) NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING ON
GO
Run Code Online (Sandbox Code Playgroud)
插入数据(拉脱维亚语):
INSERT INTO [dbo].[StringsTest]
([Value])
VALUES
('T?DS K?DU J?S')
GO
Run Code Online (Sandbox Code Playgroud)
选择:
SELECT * FROM [dbo].[StringsTest]
Run Code Online (Sandbox Code Playgroud)
结果失去了口音:
Id Value
1 TADS KADU …Run Code Online (Sandbox Code Playgroud) 我有以下查询:
DECLARE @query AS NVARCHAR(MAX);
SET @query ='
SELECT
col1 [TÜR],
col2 [KOD],
col3 [BANKA/CAR?],
col4 [BANKA HESABI],
col5 [AÇIKLAMA],
col6 [VADE],
'+ @cols +'
FROM
(
(
SELECT
''LEAS?NG'' [col1],
d.REGNR [col2],
cl.DEFINITION_ [col3],
'''' [col4],
d.DESCRIPTION [col5],
c.PAYMENTDATE [col6],
a.KDVLI- Isnull(b.KDVLI,0) [AMOUNT],
c.TRCURR [TRCURR],
e.CURCODE [CURCODE]
FROM
(SELECT
LOGICALREF,
SUM(PAYMENTTOTAL) AS KDVSIZ,
SUM(INTTOTAL) AS FAIZ,
SUM(MAINTOTAL) AS ANAPARA,
SUM(VATINPAYMENTTOTAL-PAYMENTTOTAL) AS KDV,
SUM(VATINPAYMENTTOTAL) AS KDVLI
FROM LG_011_LEASINGPAYMENTSLNS
WHERE TRANSTYPE=0
GROUP BY LOGICALREF) a
LEFT OUTER JOIN
(SELECT
PARENTREF,
SUM(PAYMENTTOTAL) …Run Code Online (Sandbox Code Playgroud)