时间:2021-07-01 10:21:17 帮助过:2人阅读
mysql -u测试用户 -p测试密码 -h测试节点 数据库名 < Page_Stats.sql
我们需要定期更新离线数据库,更新时,可能有重复的数据,即已经存在满足唯一性索引的数据。这个时候,如果直接删除数据库中的数据,可能引出一些BUG。mysql中有一种插入数据库的写法,如果数据不存在则插入数据,如果存在满足唯一性索引的数据,则更新相应数据
INSERT INTO table (column_1, column_2, column_3) VALUES (‘column_1_value‘, ‘column_1_value‘, ‘column_3_value‘) ON DUPLICATE KEY UPDATE column_1=‘column_1_value‘, column_2=‘column_2_value‘, column_3=‘column_3_value‘;
假如线上数据库只记录了每个广告主最新的出价信息,而我们想观察每个广告主的历史出价信息。那么每分钟记录所有广告主的出价信息的话,数据量将会非常大,这个时候,我们就需要对存储进行优化:如果该广告主出价信息没有变化,我们就不需要记录了
表:coupon_bid_realtime
字段:coupon bid record_time
唯一索引:coupon record_time
SELECT A.coupon, A.bid, A.record_time FROM coupon_bid_realtime AS A JOIN (SELECT coupon, MAX(record_time) AS record_time FROM coupon_bid_realtime GROUP BY coupon) AS B ON A.coupon = B.coupon AND A.record_time = B.record_time;
根据前面查询出来的广告主的出价信息,如果广告主没有变更出价信息,则不插入
想看自己写的查询语句是否充分利用了数据库的索引,可以使用EXPLAIN
,用法EXPLAIN querySQL
版权声明:本文为博主原创文章,未经博主允许不得转载。
MySQL常用脚本
标签:mysql 数据库