sql性能优化(利用merge)

业务背景:
当被查询的表的数据量非常庞大的时候,你的一个查询将会非常的缓慢。为了提高 查询性能。
1。利用merge 是做到sql集群,类似分表。但不是真正意义上的分表。
例如 user 表有 100 万条数据。

CREATE TABLE IF NOT EXISTS `user1` (  
->   `id` int(11) NOT NULL AUTO_INCREMENT,  
->   `name` varchar(50) DEFAULT NULL,  
->   `sex` int(1) NOT NULL DEFAULT '0',  
->   PRIMARY KEY (`id`)  
-> ) ENGINE=MyISAM  DEFAULT CHARSET=utf8  AUTO_INCREMENT=1 ; 
        Query OK, 0 rows affected (0.05 sec)  

mysql> CREATE TABLE IF NOT EXISTS `user2` (  
->   `id` int(11) NOT NULL AUTO_INCREMENT,  
->   `name` varchar(50) DEFAULT NULL,  
->   `sex` int(1) NOT NULL DEFAULT '0',  
->   PRIMARY KEY (`id`)  
-> ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  
Query OK, 0 rows affected (0.01 sec)  

然后将两张表整合在一起

       CREATE TABLE IF NOT EXISTS `user` (  
    ->   `id` int(11) NOT NULL AUTO_INCREMENT,  
    ->   `name` varchar(50) DEFAULT NULL,  
    ->   `sex` int(1) NOT NULL DEFAULT '0',  
    ->   INDEX(id)  
    -> ) TYPE=MERGE UNION=(user1,user2) INSERT_METHOD=LAST AUTO_INCREMENT=1 ;  
    Query OK, 0 rows affected, 1 warning (0.00 sec)  

有些人肯定会说分两张表后,哪些数据sql怎么办?
这时把mysql文件的语句改,在上一步建user表的时候,user表名与数据库现有的user名保持一致。这样就解决了现存数据的问题
当然,不是所有的mysql都能这么操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值