相关疑难解决方法(0)

何时在MySQL表中使用NULL

我很欣赏数据库表中NULL值的语义含义,不同于false和空字符串''.但是,当字段可以为空时,我经常阅读有关性能问题的内容,并建议在NULL实际上在语义上正确的情况下使用空字符串.

什么情况适合使用可空字段和NULL值?有什么权衡取舍?简单地避免完全使用NULL并简单地使用空字符串,false或0表示缺少值是明智的吗?

UPDATE

好的 - 我理解'和NULL之间的语义差异以及NULL是适当的字段值的(性能不可知)情况.但是,让我扩展一下暗示的性能问题.这是来自Schwartz,Zeitsev等人的优秀"高性能MySQL" http://www.borders.co.uk/book/high-performance-mysql-optimization-backups-replication-and-more/857673/:

MySQL更难以优化引用可空库存的查询,因为它们使索引,索引统计和值比较更加复杂.可空列使用更多存储空间,并且需要在MySQL内部进行特殊处理.当索引可空列时,每个条目需要一个额外的字节,甚至可以在MyISAM中将固定大小的inded(例如单个整数列上的索引)转换为可变大小的列.

更多信息: Google图书预览

这很可能是明确的答案 - 我只是在寻找前线的第二意见和经验.

mysql null

48
推荐指数
4
解决办法
3万
查看次数

MySQL:NULL vs""

在MySQL中使用default nulldefault ""用于文本字段更好吗?

为什么?

更新:我知道他们每个人的意义.我感兴趣的是考虑磁盘空间和性能更好.

更新2:嘿ppl!问题是"什么是更好用"而不是"每个意味着什么"或"如何检查它们"......

mysql

44
推荐指数
5
解决办法
3万
查看次数

MySQL:NULL字段使用多少空间?

将数据设为NULL可以保存任何内存而不是正常大小吗?

mysql

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

mysql中NULL和Empty有什么区别

Mysql中NULL和空字符串有什么区别?

它需要多少存储空间?

例如 .

在用户表中

name:NULL - 占用多少空间

电话: - 占用多少空间

mysql

9
推荐指数
3
解决办法
6207
查看次数

Sql设计问题

我有一个包含25列的表,其中20列可以为某些(30-40%)行提供空值.现在拥有20个空列的行的成本是多少?这个可以吗?

要么

有另一个表存储这20列并在第一个表中添加ref是一个很好的设计吗?这样我只会在有值时写入第二个表.

我正在使用SQL Server 2005.将来会迁移到2008.

只有20列是varchar,其余是smallint,smalldate

我正在存储的内容:这些列存储它所属行的不同属性.这些属性有时可以为null.

该表将容纳数十亿行

请评论.

sql database-design

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

mysql列太多了?

我正在创建一个30-50列的表.这些行大约有200K.是否建议将此数据存储在单独的表中?如果有这么多列,是否存在性能问题.

我会解释一下桌子.我必须存储过去10年的所有体育比赛(篮球,棒球,足球,曲棍球).对于其中的每一个,我需要保留其他数据.其中一些数据允许我重复使用各种体育领域.例如,每个团队都有一个主客场球队和一个赛事日期.

然而,对于这些游戏中的每一个,我也存储了诸如实现了多少次初次下降,多少三振出局以及三个指针.显然,此数据仅涉及表中的某些行.因此,我最终在每一行中都有很多NULL字段.

如有必要,我可以提供更多细节.提前感谢任何一般建议.

mysql sql optimization database-design

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

创建新表或添加字段是否有意义

我很抱歉,如果这只是询问MySQL表上的存储空间的另一种方式,例如: MySQL中的NULL(性能和存储)

但我的问题确实与最佳做法有关.

问题

假设我有一个表格,可以在给定的时间点收集客户的所有"必要"信息.12个月在路上,我意识到我喜欢捕捉人的出生日期和性别,如果他们希望提供它(场的数量是有些无关紧要,但理解它可以是一个或50个字段).

最佳做法是将新字段添加到现有表中,设置并允许所有初始值为NULL,然后使用新数据更新现有记录

要么

创建一个新表并根据主键的存在与主表建立关系?

mysql sql database database-design

7
推荐指数
1
解决办法
3244
查看次数

如何回收MySql磁盘空间

我在 MySql 服务器中有一个表,该表包含大约 1M 行。只是因为一个列表每天都在占用更多的磁盘空间。此列的数据类型为 Mediumblob。表大小约为 90 GB。

在每一行插入之后,我做一些处理然后在我真的不需要这个列之后。

那么对于这一列,如果我在处理该行后将该值设置为 NULL,MySql 是否利用这个空白空间进行下一行插入?

MySql 服务器详细信息

服务器版本:5.7

引擎:InnoDB

托管:谷歌云Sql

编辑 1:我从表中删除了 90% 的行,然后我运行了 OPTIMIZE TABLE table_name 但它只减少了 4GB 的磁盘空间并且它没有回收可用磁盘空间。

编辑 2 我什至删除了我的数据库并创建了新的数据库和表,但 MySql 服务器仍然显示 80GB 磁盘空间。MySQL服务器所有数据库的大小

SELECT table_schema "database name",
         sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
         sum( data_free )/ 1024 / 1024 "free space in MB"
     FROM information_schema.TABLES
     GROUP BY table_schema; 

+--------------------+---------------------+------------------+
| database name      | database size in MB | free space in …
Run Code Online (Sandbox Code Playgroud)

mysql database

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

NULL对MySQL表的影响是什么?(InnoDB的)

最近,我一直在考虑是否值得拥有一个可能有很多NULL列的表,或者如果有更多表没有NULL则更好.我听说过InnoDB上没有存储NULL,所以我想知道是否存在任何有很多NULL的行的缺点或问题.我一直听说常见的NULL很糟糕,但我从未真正了解过原因.顺便说一下,如果重要的话,外键上的那些将是NULL.

第二个疑问,当我在有很多NULL的列上使用INNER JOIN时是否有任何性能问题?就像,如果我有4个外键,并且我要做4个INNER JOIN,但很可能只有1个不是NULL,这是否会影响性能?谢谢

mysql null innodb

5
推荐指数
1
解决办法
3039
查看次数

在数据库列中使用 NULL 的成本是多少?

我经常使用MySQLSQLite,并计划很快将更多PostgreSQL引入我的工作流程。考虑到这一点,在每个数据库中使用 NULL 的成本是多少?我听说 MySQL 为每个 NULL 列值添加了一个额外的位,以将其标记为可空。

mysql sqlite postgresql null

5
推荐指数
1
解决办法
1527
查看次数

动态连接表MySQL

我是MySQL新手.我不确定我是对的.需要帮忙.

我有一个表格survey,其中包含以下列:

id, source_type, source_id, survey_date_time.

其他两个表是:

education哪个有id, col1, col2, col3列.

games哪个有id, col4, col5, col6列.

survey表格中的数据:

id       source_type    source_id    survey_date_time
--------------------------------------------------------
100      education         1         2013-07-25 00:00:00
101      games             1         2013-07-25 00:00:00
102      games             2         2013-07-26 00:00:00
103      education         2         2013-07-26 00:00:00
Run Code Online (Sandbox Code Playgroud)

education表中的数据

id    col1          col2          col3      
--------------------------------------------
1     col1_data1    col2_data1    col3_data1
2     col1_data2    col2_data2    col3_data2
Run Code Online (Sandbox Code Playgroud)

games表中的数据

id    col4          col5          col6      
--------------------------------------------
1     col4_data1    col5_data1    col6_data1
2     col4_data2    col5_data2 …
Run Code Online (Sandbox Code Playgroud)

mysql jointable

5
推荐指数
1
解决办法
3647
查看次数

可空列何时会严重影响性能?

据我了解,应尽可能避免数据库中的可为空列。

但是,在哪些特定情况下,可空列实际上会导致性能显着下降?

换句话说,null 什么时候会真正损害性能?(而不是当它可以忽略不计,并且根本不重要时)。

我这样问是为了知道它何时以及如何真正产生影响。

mysql

2
推荐指数
1
解决办法
1860
查看次数