Questions tagged «datatypes»

指定要存储的数据类型(字符串,日期,数字等)。

3
使用ENUM和Integer类型的优缺点?
假设在某些随机表中,您有一列名为status的列。它的实际值将被启用或禁用。 将此列的数据类型设置为int / bool(1或零)还是ENUM将值enabled与and 一起使用会更好disabled吗?优点或缺点是什么? 假设您有4个,10个甚至更多个,而不仅仅是两个有效的状态?随着所需值数量的增加,优势和劣势会左右摇摆吗?

3
使用UUID或GUID作为主键有什么缺点?
我想建立一个分布式系统。我需要将数据存储在数据库中,使用UUID或GUID作为某些表上的主键会很有帮助。由于UUID / GUID很大,而且几乎是随机的,因此我认为这种设计有缺点。替代方法是使用自动递增的INT或LONG。 使用UUID或GUID作为表的主键有什么缺点? 我可能将Derby / JavaDB(在客户端上)和PostgreSQL(在服务器上)用作DBMS。

7
如何在SQL Server中将日期和时间合并到datetime2?
鉴于以下组件 DECLARE @D DATE = '2013-10-13' DECLARE @T TIME(7) = '23:59:59.9999999' 将它们结合起来以产生DATETIME2(7)具有价值的结果的最佳方法是'2013-10-13 23:59:59.9999999'什么? 下面列出了一些无效的内容。 SELECT @D + @T 操作数数据类型日期对于加法运算符无效。 SELECT CAST(@D AS DATETIME2(7)) + @T 操作数数据类型datetime2对于加法运算符无效。 SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D) datediff函数导致溢出。分隔两个日期/时间实例的日期部分的数量太大。尝试将datediff与不太精确的datepart一起使用。 *使用可以避免在Azure SQL数据库和SQL Server 2016中发生溢出DATEDIFF_BIG。 SELECT CAST(@D AS DATETIME) + @T 数据类型datetime和time在add运算符中不兼容。 SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME) …


7
我应以哪种数据类型在数据库中存储电子邮件地址?
我知道254个字符的电子邮件地址是有效的,但是我研究过的实现倾向于使用varchar(60)到varchar(80)或等效的电子邮件。例如:此SQL Server建议使用varchar(80)或此Oracle示例 是否有理由不使用完整的254个字符的最大值?按照定义,varchar不会仅使用所需的存储量来保存数据吗? 是否存在重大的性能隐含/折衷,导致如此多的实现使用少于254个可能的字符?


3
MD5字段的最佳数据类型是什么?
我们正在设计一个读取量很大的系统(每分钟读取数万次)。 有一个表names,可以作为一种中央注册表。每行都有一个text字段representation和一个唯一字段,该字段key是该字段的MD5哈希值representation。1该表当前具有数千万条记录,并且预计在应用程序的生命周期内将增长到数十亿条。 还有许多其他表(具有高度变化的模式和记录计数)引用该names表。这些表之一中的任何给定记录都保证有一个name_key,从功能上讲,该names表是该表的外键。 1:顺便说一句,正如您所料,此表中的记录一旦写入便是不可变的。 对于除表以外的任何给定表names,最常见的查询将遵循以下模式: SELECT list, of, fields FROM table WHERE name_key IN (md5a, md5b, md5c...); 我想针对读取性能进行优化。我怀疑我的第一站应该是最小化索引的大小(尽管我不介意在那里被证明是错误的)。 问题:和列 的最佳数据类型是什么? 有没有理由使用过?还是?keyname_keyhex(32)bit(128)BTREEGIN

4
是否应向VARCHAR列添加任意长度限制?
根据PostgreSQL的文档VARCHAR,VARCHAR(n)和之间没有性能差异TEXT。 我应该在名称或地址列中添加任意长度限制吗? 编辑:不是欺骗: 当所有值均为36个字符时,使用char vs varchar可以使索引查找明显更快 我知道这种CHAR类型是过去的遗迹,我不仅对性能感兴趣,而且对诸如Erwin的其他利弊也很感兴趣。



6
如何在MySQL SELECT子句中将整数转换为布尔值?
我是新来的,所以对我好一点。我有以下情况: 为了简单起见,我有很多表,这些表在MySQL数据库的View中表示。我的问题是,在此视图中我需要一个值来表示它是一种事件还是另一种(简单的布尔值),我尝试通过以下方法实现: `gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement` AS `IsStopingEvent` 结果表示为int,因此由Entity Framework读取。问题是我确实需要一个布尔返回值,我试图通过以下方法实现: CAST((`gu`.`StoppingUnitEventME` = `ese`.`MonitoringElement`) as boolean) AS `IsStopingEvent` 这导致了一个错误,一个在MySQL Workbench中没有显示给我的错误(我只收到令人讨厌的“您在...中有一个错误”)。 你们能帮我吗? 试图在我的应用程序中解决它,但是我真的很想在数据库中解决这个问题,因为稍后它将被其他软件使用。

7
长列如何影响性能和磁盘使用率?
在我们当前的项目中,它经常发生,我们需要将列扩展几个字符。从varchar(20)到varchar(30)等等。 实际上,这到底有多重要?优化效果如何?正常的“输入”字段只允许100或200甚至500个字符的影响是什么?一封电子邮件只能包含320个字符,所以好吧-那里有一个很好的限制。但是,如果将其设置为200,我会得到什么,因为我希望电子邮件地址不会超过此数目。 通常,我们的表的行数不超过100.000,最多不超过20或30列。 我们现在使用SQL Server 2008,但是了解不同的DB如何处理此问题将很有趣。 如果影响非常小-就像我期望的那样,这将有助于获得一些好的论据(通过链接进行备份?)来说服我的DBA,这种长距离偏执并不是真正必要的。 如果是这样,我在这里学习:-)

7
储存IP位址
我必须将所有注册用户的IP地址存储在数据库中。我想知道,我应该为该列声明多少个字符? 我也应该支持IPv6吗?如果是,那么IP地址的最大长度是多少?

2
使用MAX文字或更具体的小字体
有人正在查看我的DDL代码以创建表,并提出了建议,当他们看到我看到使用VARCHAR(256)文本字段时,我希望它很小,例如名字或其他名称,我应该始终使用VARCHAR(MAX)并链接为什么使用varchar(max )。我读了它,但它似乎过时了,因为它专注于2005年,并且似乎没有提供任何真正的理由在所有文本字段上每行可能分配多达2 GB的空间。 从性能,存储等方面来看,应该如何决定是否VARCHAR(MAX)对现代版本的SQL Server 使用或更小的更具体的类型?(例如,2008、2012、2014)

5
查询以返回查询,表或视图的输出列名称和数据类型
是否有PostgreSQL查询或命令返回查询,表或视图的字段名称和字段类型? 例如,如果将解决方案应用于简单的SELECT查询,SELECT * from person则应返回如下列表: Column Name | Column Type =========================== First Name | character Last Name | character Age | integer Date of Birth | date 我已经查看了information_schema以下答案中描述的视图,它似乎很好地覆盖了表格,并且我怀疑它也覆盖了视图,但是我还没有检查过。 最后一个是任意但有效的SELECT查询,例如,数据库上的JOINS, UNIONS等。是否有内置过程或其他存储过程或脚本可以对任何有效的QUERY完全返回相同的内容? 我正在开发一个用于创建数据和查询表单的程序,该信息对于数据验证和对返回的数据执行功能是必需的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.