处理mysql列中空值的最佳方法

时间:2019-05-08 20:26:37

标签: mysql

我正在将一个具有1000万行和20列的大型CSV文件导入MySQL的表中。许多原本为INT,BIGINT,TIMESTAMP或FLOATS的值都为空。

例如:

mysql> SELECT ID,LinkedAccountId FROM billing_info WHERE LinkedAccountId = '' LIMIT 10;
+---------+-----------------+
| ID      | LinkedAccountId |
+---------+-----------------+
| 9323504 |                 |
| 9323505 |                 |
| 9323507 |                 |
| 9323509 |                 |
| 9323527 |                 |
+---------+-----------------+
5 rows in set (18.69 sec)

我是否应该始终将CHAR或VARCHAR分配给上面的空列?还是有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

如果包含该列的行很少,并且大小稀疏,则可以按1-1关系拆分这些列,例如一列具有ID和LinkedAccountID的列,然后左联接该表以检索值。由于每个值将占用两列(ID和某个值),因此,例如,如果少于10%的行包含某个列,则可能值得这样做。如果缺少的列之间存在协方差(如果LinkedAccountID丢失,则也总是缺少2列),这将特别有用,因为您可以将所有列拆分到同一张表中。

在其他情况下,使用空值可能会更好。