Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新表和删除列的快速方法_Mysql_Sql_Sql Update_Mysql Workbench - Fatal编程技术网

Mysql 更新表和删除列的快速方法

Mysql 更新表和删除列的快速方法,mysql,sql,sql-update,mysql-workbench,Mysql,Sql,Sql Update,Mysql Workbench,我有一个在mySQL中运行的相当简单的过程。我有一个表,表中有一个名为“temp”的列,它是一个varchar,我想格式化它,并将它放在名为“timestamp”的列中,这显然是一个时间戳 “temp”在.csv文件中的格式不正确,因此我必须进行一些计算,以使其成为时间戳格式。我是这样做的: update tbl set timestamp=(concat(left(temp,4), '-', substr(temp,5,2), '-', substr(temp,7,2), right(temp

我有一个在mySQL中运行的相当简单的过程。我有一个表,表中有一个名为“temp”的列,它是一个varchar,我想格式化它,并将它放在名为“timestamp”的列中,这显然是一个时间戳

“temp”在.csv文件中的格式不正确,因此我必须进行一些计算,以使其成为时间戳格式。我是这样做的:

update tbl set timestamp=(concat(left(temp,4), '-', substr(temp,5,2), '-', substr(temp,7,2), right(temp,13)));
如果有一种方法可以像我使用“LoadDataLocalInfle”那样直接将其加载到表中,那么这种方法也会起作用——任何更快的实现都会很好

另一个更新是以下非常缓慢的更新:

update tbl set thour=hour(timestamp);
第三个性能拦截器是这个只删除一列的语句——不知道为什么要花这么长时间

alter table tbl drop column temp;

任何关于如何使用这些语句来优化性能的建议,因为这是阻止我运行大型查询的愚蠢之处

您正在从.CSV读取并填充表格吗?通过这种方式,您可以读取未格式化的时间戳值,并在跳转到DB之前计算其正确值,同时使用临时列也不是明智之举,我相信您可以重构整个过程以改进它,但您可能需要一些时间和精力。您能给我们一个CSV中的示例行吗?将帮助我们给你一个更准确的答案。@Marco Singh至于第二和第三个“性能拦截器”,一个索引可能会派上用场。参考第一点,您可以在别处隔离必要的数据并在那个里执行更新,这样您就可以通过使用已经正确格式化的列进行更新来使用timestamp列上的索引。这是我的想法