你的位置:首页 > 数据库

[数据库]特定场景下SQL的优化


1.大表的数据修改最好分批处理。

1000万行的记录表中删除更新100万行记录,一次只删除或更新5000行数据。每批处理完成后,暂停几秒中,进行同步处理。

2.如何修改大表的表结构。

对表的列的字段类型进行修改,改变字段宽度时还是会锁表,无法解决主从数据库延迟的问题。

解决办法:

1.创建一个新表。

2.在老表上创建触发器同步老表数据到新表。

3.同步老表数据到新表。

4.删除老表。

5.将新表重新命名为老表。

可以使用命令,完成上面的工作:

pt-online-schema-change –alter=”modify c varchar(150) not null default ‘’” –user=root –password=root d=sakia, t=表名 –charset=utf8 –execute

3.优化not in 和 <> 的查询

例子:

select customer_id ,firstname,email from customer where customer_id

not in (select customer_id from payment)

会多次查询payment 表,如果payment表记录很多效率将很低。

改写后的sql

select a.customer_id ,a.firstname,a.email from customer a left join payment b

on a.customer_id=b.customer_id where b.customer_id is null;

4.对汇总表的优化查询

select count(1) from product_comment where product_id=999;

创建汇总表:

create table product_comment_cnt (product_id ,cnt int);

select sum(cnt) from (

select cnt from product_comment_cnt where product_id=999 union all

select count(1) from product_comment where product_id =999 and timestr>date(now())

) a

每天定时更新汇总表,再加上当天的数据。

 




去海岛旅游跟团要多少钱去海岛旅游需要多少钱海岛旅游大概多少钱到海岛旅游要花多少钱去海岛签证要几天2015广东珠海春节哪里最好玩?广东珠海春节赏花看表演的好去处? 2015春节澳门环岛游有哪些优惠活动?澳门环岛游风情表演好看吗? 茂名放鸡岛有哪些娱乐项目?放鸡岛海上游乐世界适合多大儿童玩? 2015珠海澳门环岛游春节去有什么美食?澳门环岛游春节门票价格? 国内体验“慢生活”哪里好? 香江野生动物园电话?长隆香江动物园门票预订优惠吗? 上海世博会“世博之旅”景点 全国首家最大主题性菜系文化博物馆 西安周边赏银杏好去处黄柏塬 到宝墨园南粤苑交通路线?宝墨园和南粤苑距离多远? 宝墨园南粤苑玩点是什么?番禺宝墨园与南粤苑区别在哪里? 宝墨园南粤苑门市价多少?宝墨园南粤苑联票多少钱? 南粤苑与宝墨园怎么样?广州南粤苑景点介绍? 广州海洋公园介绍?广州动物园海洋公园门票包含什么? 百色澄碧湖风景区电话?澄碧湖预约优惠多少? 广州海洋公园地铁怎么坐?广州动物园海洋公园旅游线路? 夏末秋初充满异域风情的哈尔滨之旅 Q65110A7855 Datasheet Q65110A7855 Datasheet Q65110A7856 Datasheet Q65110A7856 Datasheet Q65110A7857 Datasheet Q65110A7857 Datasheet 龙岗马峦山 龙岗马峦山 龙岗马峦山 清远天门沟 清远天门沟 清远天门沟 大明山滑雪场 大明山滑雪场 大明山滑雪场