我正在尝试优化我的数据库.为了做到这一点,我需要能够确定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)
您可以使用以下语句执行此操作
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)
归档时间: |
|
查看次数: |
10031 次 |
最近记录: |