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...