mysql - 如何删除 mysql 中表的列,其中该列的所有值为空。我有 38GB 的​​表,因此需要性能。

标签 mysql

我有一个巨大的数据库表 (38 GB),其中有许多列的所有值为 null。问题是,在创建表之前,您不知道哪些列将包含数据,因此我们必须在创建表时保留所有列。但是由于查询的这种性能非常糟糕。

因此需要找到所有其值为空的列以减少表的大小。此外,当内部连接完成时,它会花费太多时间。那么是不是大表的内连接需要更多的时间。

最佳答案

做一个

SELECT Count(distinct colName) FROM myTable

对于每一列。这样,如果没有其他值,您将只获得结果。然后你可以

ALTER TABLE myTable DROP COLUMN colName

放下col.

一个替代方案可能是你做一个

SELECT * FROM myTable procedure Analyse()

通过这种方式,您将获得表格的概览,其中所有列都包含两个有趣的列:Empties_or_zerosNulls。两者都包含空行的计数。

关于mysql - 如何删除 mysql 中表的列,其中该列的所有值为空。我有 38GB 的​​表,因此需要性能。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26418299/

相关文章:

MySQL 查询 JOIN 返回 1 个空字段

php - 如何使用 PHP 从两个不同的表中进行选择,从结果中创建变量并对它们进行数学运算

MySQL根据ID从一个表选择到另一个表

php - 如何将表从远程服务器上的一个表复制到另一个远程数据库上的表?

php - Ajax 函数未运行

mysql - 显示我的数据库中的所有表,但只有一个?

java - 无法从数据库中检索数据

php - PHP/MySQL 中的即时获胜程序 - 如何确保只选择一名获胜者?

mysql - 用于从两个连接表获取数据的优化 SQL(来自两个表的 user-from-id 和 user-to-id 消息的用户名)

mysql - 在 Varchar 上创建 MySQL 索引总是会产生 2 个索引?