国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql解決問題及小技巧記錄

2024-07-24 12:59:41
字體:
來源:轉載
供稿:網友

1.得到兩個日期相差多少秒

created是個datetime. 本例場景是得到該條記錄創(chuàng)建了多少秒,從而與過期時間比對判斷是否過期.篩選出已經過期的記錄 拿出來操作并進行更新.

SELECT unix_timestamp()- unix_timestamp(created) as expiredTime from t_test where id = 1

上千萬條記錄性能存不存在問題目前沒有結論。如果不行后續(xù)想有沒有更好的解決方法

2.分批次取數據<轉>

很多場景都是需要我們分批取數據,避免block住庫表. 一般做法是

select * from datatable limit offset,amount

這里就會有一個問題,隨著offset值的越來越大,這條sql要掃描的表數據就會越來越多,因為要定位到offset這一行就需要掃描比offset小的所有行。顯然在一張大數據量的表中,去這樣做,性能就會出問題。為了避免這樣的情形出現,我們自然會想到使用索引來解決,比如使用自增序列id進行分批取:

select * from datatable where id >= start and id<start+batchCount

這樣我們對id建索引,然后分批去取,顯然效果會高很多,但是如果自增序列由于刪除等操作變得不是連續(xù),就會出現空執(zhí)行和多執(zhí)行的情況出現。要解決這個方法,我們就需要結合使用索引和分頁的優(yōu)勢來處理:

select * from datatable where id >= start limit batchCount

然后每次取回來我們再計算出起始id值,再去取下一批數據。這樣就可以既避免了第一種不走索引,查詢性能低下的問題,又解決了第二種id不連續(xù),導致取回來的數據量不穩(wěn)定導致浪費的問題了。

例子: 這個查詢可能會返回10W條數據.需要分批次查詢

<!-- 篩選出在未來一天內即將過期的記錄 -->SELECT `id`, `mobile`FROM t_userWHERE id >= #{startIndex} and`status` = 1 AND( `expire_sec` - ( unix_timestamp() - unix_timestamp(`created`) )) < 86400limit 1000
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 北流市| 东乌珠穆沁旗| 西华县| 中西区| 安宁市| 金塔县| 仙游县| 桐庐县| 铁岭县| 阿图什市| 商洛市| 巴东县| 土默特左旗| 调兵山市| 龙里县| 呼和浩特市| 吴忠市| 许昌县| 石棉县| 五家渠市| 通道| 剑川县| 萨嘎县| 田东县| 丹棱县| 乐业县| 五原县| 合作市| 鹤峰县| 台湾省| 文昌市| 抚顺县| 宾川县| 宁陕县| 城市| 德惠市| 河曲县| 塘沽区| 镇沅| 延长县| 天门市|