mysql設計 優化

2022-09-01 05:24:10 字數 3613 閱讀 4723

1.複製表結構

create table student like user;

2.複製表內容

insert into t3 select * from t1;

1.檢視索引

show index from user\g

2.普通索引

1)建立

create index i_age on user(age);

2)刪除

drop index i_age on user;

3.唯一索引

1)create unique index u_username on user(username);

2)drop index u_username on user;

4.主鍵索引

--去除auto_increment 主鍵不能modify

alter table user modify id int unsigned;

1)建立(要自增必須主鍵)

alter table table_name add primary key (column_list)

2)刪除

alter table table_name drop index index_name

alter table table_name drop primary key

檢視相當於截圖 會隨著表變化而變化 沒有儲存任何資料

1.建立

create view userclass as select user.username,user.age,class.name from user,class where user.class_id=class.id;

2.刪除

drop view userclass;

3.檢視

show tables ;

4.select * from userclass;

mysql檢視表中未來的自增數

show create table user;

1.mysql字串函式

concat(string [,...]) //連線字串

lcase(string2) //轉換成小寫

ucase(string2) //轉換成大寫

length(string) //string長度

ltrim(string2) //去除前端空格

rtrim(string2) //去除後端空格

repeat(string2,count) //重複count次

reapeat(str,search_str,replace_str) //在str中用replace_str替換search_str

substring(str,position,[,length]) //position開始 取length個字元

space(count) //生成count個空格

2.數學函式

bin() //把某乙個數轉換為二進位制

ceiling() //取上乙個整數

floor() //取下乙個整數

select floor(10.5);

max() //取最大整數

select max(id) from user;

min() //取最小整數

sqrt() //平方根

rand() //隨機數

3.日期函式

curdate()

curtime()

now()

unix_timestamp()

from_unixtime()

week(date)

year(date)

datediff()

sql語句優化

1)優化sql語句的一般步驟

2)索引優化

3)check與optimize使用方法

4)常用sql優化

檢查伺服器增刪查改使用頻次 自啟動以來

show status like "%innodb_rows%";

通過show status命令了解各種sql執行效率

格式:show[session|global]status;

session(預設)表示當前連線

global表示自資料庫啟動至今

show status;

show global status;

show status like 'com_%';

show global status like 'com_%';

定位執行效率較低的sql語句

1.explain或desc定位一條sql語句的影響行數

desc select * from user where id=1\g

desc select * from user where username='weizai'\g

1.檢視慢查詢次數

show status like "%quer%";

slow_queries | 0

2.修改慢查詢時間(my.ini)

long_query_time=6

show variables like "%query%";

附錄:批量插入數萬條測試資料(儲存過程)

mysql> delimiter $$

mysql> create procedure ptest()

-> begin

-> declare pid int ;

-> set pid = 1000000;

-> while pid>0 do

-> insert into ...... --插入語句

-> set pid = pid-1;

-> end while;

-> end $$

mysql> delimiter ;

mysql> call myfunction();//呼叫儲存過程

1.optimize table sales;

1).myisam表沒有問題

2).innodb表ibdata1檔案無法**空間

create index ind_company2_name on company2(name(4))

索引的儲存分類

1).myisam

2).innodb

索引用於快速找出某個列中有特定值的行 對相關列使用索引是提高select操作效能的最佳途徑

1.使用索引

1)對於建立的多列索引 只要查詢的條件中用到最左邊的列

索引一般會被使用

如下復合索引(比較少)

create index ind_sales2_com_mon on sales2(company_id,moneys);

然後按照company_id進行查詢 發現使用了復合索引

explain select * from sales2 where company_id=2006\g

使用下面的查詢就沒有使用到復合索引

explain select * from sales2 where moneys=1\g

3)如果對大的文字進行搜尋 使用全文索引而不使用like % %

4)如果列名是索引 使用column_name is null將使用索引

MySQL 效能優化,優化設計及設計原則解讀

mysql效能優化的目的 如何合理的設計資料庫?什麼樣的資料庫設計才能給後期dba優化提供基石?資料庫設計與程式設計的差異?資料庫設計早期優化 1.關係明確 理清表之間的關係,可以通過冗餘的方式提高效率 2.節省空間 根據業務經驗,設定字段長短 3.提高效率 資料庫表開發流程 原型 逐步完善 表的設...

mysql資料庫設計優化

1 選取最適用的字段屬性 1 資料庫中的表越小,查詢效率越高,所以將表中字段的寬度設計的盡可能小 2 字段設定為not null,減少比較null值 3 對於省份與性別等,可定義為enum型別 數值型資料,處理速度比文字型別快 2 適用連線 join 代替子查詢 sub queries 使用join...

mysql的優化 MySQL優化

一 sql語句優化 1 使用limit對查詢結果的記錄進行限定 2 避免select 將需要查詢的字段列出來 3 使用連線 join 來代替子查詢 4 拆分大的delete或insert語句 二 選擇合適的資料型別 1 使用可存下資料的最小的資料型別,整型 date,time char,varcha...