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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql 优化表_mysql里sql优化和表结构优化

發(fā)布時(shí)間:2023/12/10 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 优化表_mysql里sql优化和表结构优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

開啟慢查詢?nèi)罩?計(jì)入sql

show variables like 'slow_query_log';//慢查詢查看狀態(tài) OFF未開啟 ON開啟

show variables like '%log%';//沒有使用索引的sql計(jì)入慢查詢?nèi)罩局?/p>

set global log_queries_nor_using_indexes = on;

//開啟log_queries_nor_using_indexes 為ON 記錄未使用索引的查詢

show variables like 'long_query_time';

//超過多少時(shí)間就記錄到慢查詢中

//開啟慢查詢

set global slow_query_log = on;

//慢查詢?nèi)罩镜奈恢?/p>

show variables like 'slow%';

left join :eft join是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,left join是以左表為準(zhǔn)的.

換句話說,左表(A)的記錄將會(huì)全部表示出來,而右表(B)只會(huì)顯示符合搜索條件的記錄(例子中為: A.aID = B.bID).

right join:和left join的結(jié)果剛好相反,這次是以右表(B)為基礎(chǔ)的,A表不足的地方用NULL填充.

inner join:這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎(chǔ),它只顯示符合條件的記錄.

sql索引優(yōu)化

explain select 字段 from 表名 ;

table 代表當(dāng)前表

type 顯示類型 重要列 !性能最好到最壞排序 const(主鍵唯一索引查找),eq_reg(范圍查找),ref(一個(gè)表基于一個(gè)索引查找),range(基于索引范圍查找),index(對(duì)索引的掃描),all(表掃描)

possible_keys 當(dāng)前表可用到的索引有哪些,如果為null就是沒有可能的索引

key 實(shí)際使用的索引,為null就是沒有可能的索引

key_len 使用索引的長(zhǎng)度 越小越好

ref 顯示索引的哪一列被使用

rows mysql必須檢查用來返回請(qǐng)求的數(shù)據(jù)行數(shù)

extra 返回值

using filesort:查詢需要優(yōu)化,mysql需要進(jìn)行額外步驟,文件排序進(jìn)行優(yōu)化

using temporary :查詢需要優(yōu)化,mysql需要?jiǎng)?chuàng)建一個(gè)臨時(shí)表來存儲(chǔ)結(jié)果

sql優(yōu)化例子 *

Where查詢條件,on內(nèi)外連接時(shí)候用,as作為別名,in查詢某值是否在某條件里

max優(yōu)化方法:查找最大的 最后的

select max(字段data) from 表;

優(yōu)化方法:在data上建立索引

create index idx_data on 表(字段data) ;

count優(yōu)化方法:全部

查找2006-2007的數(shù)量全部的數(shù)量

優(yōu)化方法:

select count(year='2006' or year='2007') from 表;

查找2006-2007的分開的數(shù)量

優(yōu)化方法:

select count(year='2006' or null),count(year='2007' or null) from 表;

子查詢優(yōu)化:

select * from t where t.id in (select t1.tid from t1);

優(yōu)化方法: 需要把子查詢優(yōu)化為join查詢 join on 后邊的條件只針對(duì)附表

select t.id from t jion t1 on t.id = t1.tid;

去重distinct

select distinct t.id from t jion t1 on t.id = t1.tid;

group by查詢

select actor.first_name,actor.last_name, count(*) from filem_actor inner actor using(actor_id) group by filem_actor.actor_id;

優(yōu)化后group by查詢

select actor.first_name,actor.last_name,c.cnt from actor inner join (select actor_id,count(*)as cnt from film_actor group by actor_id ) as c using(actor_id);

limit優(yōu)化方法:

select film_id,dd from film order by title limit 600,5;//從第600行開始的5條記錄

優(yōu)化后

select film_id,dd from film where film_id >600 and film_id <=605 oder by film_id limit 1,5;

索引優(yōu)化例子:

1在where從句,group by從句,order by從句,on從句中出現(xiàn)的列

2索引字段越小越好

3離散度大的列放到聯(lián)合索引前面

優(yōu)化查詢效率,對(duì)插入 修改 刪除語句有影響

索引越多查詢?cè)铰?/p>

如何找到重復(fù)索引

列子:

id primay key主鍵索引 unique(id)又生成一個(gè)唯一索引 這就重復(fù)索引!

如何找到zongyu索引

多個(gè)索引的前綴列是相同的

id primay key主鍵索引 又生成一個(gè)key(name,id)聯(lián)合索引!

表結(jié)構(gòu)優(yōu)化

如何選擇合適的數(shù)據(jù)類型:

1.可以存下數(shù)據(jù)的最小的數(shù)據(jù)類型

2.使用簡(jiǎn)單的數(shù)據(jù)類型。 int比varchar在mysql處理上簡(jiǎn)單

3.盡可能的使用not null定義字段

4.盡量少于text類型,非用時(shí)考慮分表

范式化優(yōu)化

數(shù)據(jù)表結(jié)構(gòu)

傳遞函數(shù)依賴關(guān)系 商品名稱-》分類-》分類描述

商品名稱 價(jià)格 重量 有效期 分類 分類描述

把一張表分成3張表1商品表商品名稱 價(jià)格 重量 有效期2分類表 分類 分類描述3關(guān)系表 **

商品名稱 分類

反范式化優(yōu)化

操作前:

用戶表:

用戶id 姓名 電話 地址 郵編

訂單表:

訂單id 用戶id 下單時(shí)間 支付類型 訂單狀態(tài)

訂單商品表:

訂單id 商品id 商品數(shù)量 商品價(jià)格

商品表:

商品id 名稱 描述 過期時(shí)間

操作后:

用戶表:

用戶id 姓名 電話 地址 郵編

訂單表:合并一個(gè)表中查詢

訂單id 用戶id 下單時(shí)間 支付類型 訂單狀態(tài) 訂單價(jià)格 用戶名 電話 地址

訂單商品表:

訂單id 商品id 商品數(shù)量 商品價(jià)格

商品表:

商品id 名稱 描述 過期時(shí)間

執(zhí)行sql查詢訂單信息:

select a.用戶名,a.電話,a.地址,a.訂單id,a.訂單價(jià)格 from 訂單表 a

表的垂直拆分:

例:

id

title varvhar

description text

..字段

如果表中有包含 title和description text數(shù)據(jù)類型的話,拆分出去

用拆分后的付加表中的表id關(guān)聯(lián)拆分前的表id

付加表:

id

title varvhar

description text

表的水平拆分:

解決表單的數(shù)據(jù)量過大

系統(tǒng)優(yōu)化:

1操作系統(tǒng)的優(yōu)化 2mysql系統(tǒng)本身優(yōu)化

mysql服務(wù)器上關(guān)閉iptables,selinux等防火墻軟件

mysql優(yōu)化:

linux下mysql配置文件位置 /etc/my.cnf 或者 /etc/mysql/my.cnf

windows下mysql配置文件位置 c:/ windows/my.ini文件

服務(wù)器硬件優(yōu)化

mysql一些工作只能用到單核cpu的

選擇單核頻率更快的cpu

總結(jié)

以上是生活随笔為你收集整理的mysql 优化表_mysql里sql优化和表结构优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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