关于SHOPEX网店的MYSQL优化问题
我用的网店程序,因为商品数量巨大,导致服务器负载很大,所以相对数据库做些优化。其中一个动作就是把商品按照上下架区分开放在不同的表里。现在的MYSQL数据库里,上架商品和下架商品都在一个表里。是否上架,用marketable:true和false这个来区别,请问我改用什么命令对所有marketable为false的商品另外建一个表?并自动导入?
追问:如果我这样改了,以后会不会都自动的把上下架商品分开在2个表里?
网店程序还能正常运行吧?
对于那些下架的商品,如果我再次上架,还可以吗?
答案:你先要创建一个新表,用来存储marketable为false的商品信息,表结构可以和原来的表一样。
语句:
CREATE TABLE `marketable_false` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`字段名1` int(11) NOT NULL,
.....中间省略.....
`字段名N` varchar(255) COLLATE gbk_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=gbk COLLATE=gbk_bin;
然后使用下面的语句将marketable为false的商品数据导入到表中:
insert into `marketable_false` (`id`, `字段1`,中间省略,`字段N`) values (`1`,`字段1的值`,中间省略,`字段N的值`),(`2`,`字段1的值`,中间省略,`字段N的值`),....中间省略....,(`N`,`字段1的值`,中间省略,`字段N的值`),
这样就可以了。
不过,你既然能通过命令操作数据库,那是不是也能直接使用Navicat for MySql工具啊?
使用Navicat for MySql工具的话,你可以先将原来的表导出一个SQL文件,然后修改SQL文件中的内容,再将SQL文件导入到MySql数据库中就可以了。
其他:create table as
select * from tablename where marketable=false;
上一个:mysql数据库到底下载哪个
下一个:Navicat for MySQL 中怎么创建触发器? 我又A,B两张表,B表字段和A表是一样的,