MySQL确定最长的VarChar长度

Jer*_*con 8 mysql varchar

我正在尝试优化我的数据库.为了做到这一点,我需要能够确定varchar列中最长的数据条目,然后将列定义修剪到恰好高于该值.

如何使用sql查找表中最长的varchar条目的长度?

CREATE TABLE `poller_output` (
  `local_data_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `rrd_name` varchar(19) NOT NULL DEFAULT '',
  `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `output` varchar(200) NOT NULL DEFAULT '',
  PRIMARY KEY (`local_data_id`,`rrd_name`,`time`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

Aur*_*osa 20

例如,如果您想知道字段的最大长度output,可以使用此查询:

SELECT Max(CHAR_LENGTH(`output`)) AS Max FROM `poller_output`
Run Code Online (Sandbox Code Playgroud)


whu*_*n05 9

您可以使用以下语句执行此操作

SELECT column_name FROM database.table PROCEDURE ANALYSE(1,1);
Run Code Online (Sandbox Code Playgroud)

此结果的Max_length值将为您提供该列中最长的varchar.

因此,在这种情况下,假设您要调查输出列,则可以运行以下命令

SELECT output FROM poller_output PROCEDURE ANALYSE(1,1);
Run Code Online (Sandbox Code Playgroud)

这样做的好处是它还可以在返回值中为您提供最佳的字段类型,这将是类似的行

VARCHAR(56) NOT NULL
Run Code Online (Sandbox Code Playgroud)

  • +1 - 我认为这是优化数据库的更好答案.它为您提供的不仅仅是长度. (2认同)