程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> MySql數據庫的設計及語句優化

MySql數據庫的設計及語句優化

編輯:更多數據庫知識


如何更好的寫數據庫?如何數據庫語句優化?
接下來吾愛編程為大家簡單介紹一下~~
----------------------
在數據庫表設計方面:

設置刪除狀態字段:
盡量少用delete語句~~這個語句在操作的時候會鎖表~~以後直接用update
況且如果使用這個語句也會對數據產生一些問題~~還是不要刪了
~~~~~~~
字段上面最好不要用null做默認值~~
~~~~~
做合理的索引~大量的索引只會似的插入數據緩慢
~~~~
類型字段建議采用tinyint
字符類型如下解釋
varchar內存占用率小
char效率高(固定大小的字符串最好用這個存)
主鍵大部分都喜歡用 int~~估計大家都沒有過 無符號的int(因為主鍵是非負數~~用這個的話主鍵量可以達到2倍~~~23333333)
~~~~
mysql和redis結合:
接下來舉個例子說明一下:
比如說點贊~~~這個是個頻繁的操作~~頻繁的有好多點贊狂~~2333333
把在redis中存儲點贊信息:
返回json時再和文章數據做整合~~效率提高數倍
~~~~
嘗試對一些經常不動的數據進行緩存處理~~
----------------------
在數據庫語句方面:
在使用select語句的時候盡量多些字段,如果用*的話效率好低地說
查詢數量的時候 盡量使用 count(1)這種樣子
查詢一條語句的時候最好在後面加上 limit 1 這樣的話數據庫查詢到一條的話就停止了
~~~~~~
如何進行快速插入呢?
insert into user(name) values('m');
insert into user(name) values('n');
拼接成如下語句
insert into user(name) values('m'), ('n');
效率會翻好幾倍
~~~~~~~
如果能用inner join盡量使用~~這個效率最高

--------下面是在百度找到的一些方法-------
在查詢的時候盡量不要用到 null判斷 這樣會導致數據庫不用索引~去全表掃描~~效率很低~~
應盡量避免在 where 子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃描~~~
應盡量避免在 where 子句中使用 or 來連接條件,如果一個字段有索引,一個字段沒有索引,將導致引擎放棄使用索引而進行全表掃描~~~
select id from t where num=10 or Name = 'admin'
可以這樣查詢:
select id from t where num = 10 union all select id from t where Name = 'admin'
in 和 not in 也要慎用,否則會導致全表掃描,如:
select id from t where num in(1,2,3)
對於連續的數值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3
很多時候用 exists 代替 in 是一個好的選擇:
select num from a where num in(select num from b)
用下面的語句替換:
select num from a where exists(select 1 from b where num=a.num)
下面的查詢也將導致全表掃描:
select id from t where name like ‘%abc%’
*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved