日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql技巧

發(fā)布時(shí)間:2025/3/14 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql技巧 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以下內(nèi)容來(lái)自于mysql經(jīng)驗(yàn)分享。

一、分頁(yè)sql的寫法

假設(shè),一個(gè)公司產(chǎn)品有2000條記錄,要分頁(yè)取其中10個(gè)產(chǎn)品,假設(shè)訪
問公司索引需要50個(gè)IO,2條記錄需要1個(gè)表數(shù)據(jù)IO
在mysql中采用limit分頁(yè)
原理:一次性根據(jù)過濾條件取出所有字段進(jìn)行排序返回
select * from t
where thread_id = 771025
and deleted = 0
order by gmt_create asc limit 0, 10;

數(shù)據(jù)訪問開銷=索引IO+索引全部記錄結(jié)果對(duì)應(yīng)的表數(shù)據(jù)IO

該種寫法越翻到后面執(zhí)行效率越差,時(shí)間越長(zhǎng),尤其表數(shù)據(jù)量很大的時(shí)候

或者可以更優(yōu)化的,利用表的PK
原理:先根據(jù)過濾條件取出主鍵id進(jìn)行排序,再進(jìn)行join操作取出其他
相關(guān)字段//數(shù)據(jù)量大的時(shí)候,分頁(yè)時(shí)間是否越慢
select t.*from (
select id from t
where thread_id = 771025 and deleted = 0 order by gmt_create asc limit 0, 10) a, t
where a.id = t.id ?;
//假設(shè)t表主鍵是id列,且有覆蓋索引secondary key:thread_id+deleted+gmt_create

分頁(yè)SQL更多的是在業(yè)務(wù)上的優(yōu)化。

二、多表關(guān)聯(lián)

驅(qū)動(dòng)表(from的順序)
select a.*,b.*
from a,b ----這是錯(cuò)誤的,b表作為驅(qū)動(dòng)表
where a.id=b.id
and b.time>=‘xxxx’and b.time<=‘xxxx’and a.status=1;
驅(qū)動(dòng)表(緊跟在from后面的表)原則是,結(jié)果集較小的表,而不是表較小的表

三、where的順序
select * from t where id=1 and type=1;
select * from t where type=1 and id=1;
兩種寫法相同,where是沒有順序的

四、其他

innodb表都需要有一個(gè)主鍵

單表行數(shù)不要超過一千萬(wàn),超過一千萬(wàn)要提前分表;

多條insert拼接成一條提交可以極大提高效率,比如1000條拼成一條;多條相關(guān)的更新語(yǔ)句可以放在一個(gè)事務(wù)中;

轉(zhuǎn)載于:https://www.cnblogs.com/simonote/archive/2013/05/26/3100172.html

總結(jié)

以上是生活随笔為你收集整理的mysql技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。