标签: varchar

在固定大小的字段上使用 CHAR 与 VARCHAR 对性能有何影响?

我有一个存储 MD5 哈希的索引列。因此,该列将始终存储 32 个字符的值。无论出于何种原因,它都是作为 varchar 而不是 char 创建的。迁移数据库以将其转换为字符是否值得?这是在带有 InnoDB 的 MySQL 5.0 中。

mysql innodb performance varchar

66
推荐指数
3
解决办法
8万
查看次数

写 varchar 和 nvarchar 之间的区别

目前在我们的 SQL Server 2012 数据库中,我们正在使用varchar,我们想改变它nvarchar。我已经生成了一个脚本来做到这一点。

我的问题是 SQL Server 写入varchar列的方式与写入列的方式有什么不同吗?nvarchar列的吗?我们有一些我很关心的后端程序。

编辑:
不确定这是否有帮助,但这些列没有索引、f/k 或约束。

sql-server varchar

65
推荐指数
3
解决办法
25万
查看次数

MySQL VARCHAR 大小的性能影响

在 MySQL 中 varchar 大小之间是否存在性能差异?例如,varchar(25)varchar(64000)。如果没有,是否有理由不声明所有具有最大大小的 varchars 以确保您不会用完空间?

mysql performance datatypes varchar

55
推荐指数
6
解决办法
3万
查看次数

我应该为 VARCHAR 列添加任意长度限制吗?

根据PostgreSQL 的文档VARCHAR,VARCHAR(n)和之间没有性能差异TEXT

我应该为名称地址列添加任意长度限制吗?

编辑:不是欺骗:

我知道这种CHAR类型是过去的遗物,我不仅对性能感兴趣,而且对其他优缺点感兴趣,例如 Erwin 在他惊人的回答中所述。

postgresql performance datatypes varchar

55
推荐指数
2
解决办法
5万
查看次数

MySql 中 VARCHAR 字段的可能索引

我在MySql 数据库中工作,有一个这样的表:

+--------------+
|  table_name  |
+--------------+
|    myField   |
+--------------+
Run Code Online (Sandbox Code Playgroud)

...我需要进行很多这样的查询(列表中有 5-10 个字符串)

SELECT myField FROM table_name
WHERE myField IN ('something', 'other stuff', 'some other a bit longer'...)
Run Code Online (Sandbox Code Playgroud)

将有大约 24.000.000 个唯一行

1)我应该使用FULLTEXTor 和INDEXkeyVARCHAR(150)吗?
2)如果我将字符从 150 增加到 220 或 250 ......会产生很大的不同吗?(有没有办法计算它?)
3)正如我所说,它们将是唯一的,所以myField应该是一个PRIMARY KEY。向已经是 VARCHAR INDEX/FULLTEXT 的字段添加 PRIMARY KEY 是不是很少见?

mysql index full-text-search varchar

51
推荐指数
2
解决办法
7万
查看次数

Transact-SQL 查询中字符串前的 N 前缀

请您告诉我,我什么时候应该在 Transact-SQL 查询中的字符串前使用 N 前缀?我已经开始使用一个数据库,使用这样的查询我没有得到任何结果

SELECT * FROM a_table WHERE a_field LIKE '%?_pattern%'
Run Code Online (Sandbox Code Playgroud)

直到我将模式更改为N'%?_pattern%'. 过去我从来没有添加过这个前缀,所以我很好奇。a_field被定义为nvarchar(255),但我认为原因是别的。

sql-server varchar

41
推荐指数
2
解决办法
6万
查看次数

不同 Postgresql 字符的大小限制

postgresql 中各种数据类型的大小限制是多少?我在某处看到 for character varying(n),varchar(n) n必须在 1 到 10485760 之间。这是真的吗?

什么是有效的尺寸character(n)char(n)text

postgresql varchar

41
推荐指数
1
解决办法
8万
查看次数

当所有值都是 36 个字符时,使用 char 和 varchar 进行索引查找会明显更快吗

我有一个旧模式(免责声明!),它使用基于哈希生成的 id 作为所有表的主键(有很多)。这种 id 的一个例子是:

922475bb-ad93-43ee-9487-d2671b886479
Run Code Online (Sandbox Code Playgroud)

改变这种方法是不可能的,但是索引访问的性能很差。撇开这可能的无数原因不谈,我注意到有一件事似乎不太理想 - 尽管所有许多表中的所有 id 值的长度都正好是 36 个字符,但列类型是varchar(36)而不是 char(36)

将列类型更改为固定长度是否会char(36)提供任何显着的索引性能优势,除了每个索引页的条目数量增加很小等之外?

即在处理固定长度类型时 postgres 的执行速度是否比处理可变长度类型快得多?

请不要提及微小的存储节省 - 与对列进行更改所需的手术相比,这无关紧要。

postgresql performance index varchar

38
推荐指数
1
解决办法
1万
查看次数

Varchar(max) 字段在 8000 个字符后截断数据

我有一个字段来存储一些数据,该字段声明为varchar(max). 据我所知,这应该是存储2^31 - 1字符,但是当我输入超过 8000 个字符的内容时,它会切断其余部分。

我已经验证所有数据都包含在我的更新语句中,并且查询在其他地方看起来都很好,但是当我选择数据时,它已被切断。

当我在我的网站上显示数据以及使用 SSMS 到select content from table.

select DATALENGTH (content) from table 返回 8000。

我使用这个设置数据:update table set content = 'my long content' where id = 1。内容确实有很多 HTML,但我看不出这会导致问题。我唯一能看到的是我正在做的事情是替换所有内容"''因为这是用户输入的内容(不记得我现在为什么这样做了)。

我确实通过删除内容中的所有单引号设法使内容正确输入,所以我认为我的数据而不是数据库发生了一些奇怪的事情。

我应该对查询做一些特别的事情来使用一个varchar(max)字段吗?

使用:SQL Server 2008 (10.50) 64 位。

sql-server-2008 sql-server varchar

29
推荐指数
1
解决办法
6万
查看次数

为什么 LEN() 函数严重低估了 SQL Server 2014 中的基数?

我有一个带有字符串列的表和一个检查具有特定长度的行的谓词。在 SQL Server 2014 中,无论我检查的长度如何,我都会看到估计为 1 行。这产生了非常糟糕的计划,因为实际上有数千甚至数百万行,而 SQL Server 选择将此表放在嵌套循环的外侧。

对于 SQL Server 2014 的基数估计为 1.0003 而 SQL Server 2012 估计为 31,622 行,是否有解释?有没有好的解决方法?

以下是该问题的简短再现:

-- Create a table with 1MM rows of dummy data
CREATE TABLE #customers (cust_nbr VARCHAR(10) NOT NULL)
GO

INSERT INTO #customers WITH (TABLOCK) (cust_nbr)
    SELECT TOP 1000000 
        CONVERT(VARCHAR(10),
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL))) AS cust_nbr
    FROM master..spt_values v1
    CROSS JOIN master..spt_values v2
GO

-- Looking for string of a certain length.
-- While both CEs …
Run Code Online (Sandbox Code Playgroud)

sql-server varchar functions sql-server-2014 cardinality-estimates

26
推荐指数
2
解决办法
1486
查看次数