在資料庫表設計方面:
在設計資料庫的時候我們總要設計一些冗餘字段~~為啥呢?
我自己猜的~~
有一些查詢,冗餘字段可以幫助我們不需要去聯多表查詢~~
設定刪除狀態字段:
盡量少用delete語句~~這個語句在操作的時候會鎖表~~以後直接用update
況且如果使用這個語句也會對資料產生一些問題~~還是不要刪了
字段上面最好不要用null做預設值~~
做合理的索引~大量的索引只會似的插入資料緩慢
型別字段建議採用tinyint
字元型別如下解釋
varchar記憶體佔用率小
char效率高(固定大小的字串最好用這個存)
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.程式優化,用 prepareedstatement 進行增刪改查 2.程式優化,盡量批量處理,避免逐條處理,減小 io數 3.查詢結果不要用 來查詢所有字段,要明確指明結果字段 4.減少多表連線數,盡量少的表進行連線 5.表連線時,盡量用主鍵進行連線或用唯一索引 6.表的查詢多時,一定建立索引 ...
如何優化資料庫?提高資料庫的效能
1.對語句的優化 用程式中,保證在實現功能的基礎上,儘量減少對資料庫的訪問次數 通過搜尋引數,儘量減少對錶的訪問行數,最小化結果集,從而減輕網路負擔 能夠分開的操作盡量分開處理,提高每次的響應速度 在資料視窗使用sql時,盡量把使用 的索引放在選擇的首列 演算法的結構盡量簡單 在查詢時,不要過多地使...
如何寫資料庫表的SQL ?
現有a b c三個表 主鍵都是snum,現要實現刪除a表中某個記錄 比如snum為1的記錄 如何級聯刪除b c表中snum為1的記錄?如果b,c表的snum是參照a的snum,那麼b,c兩張表要加入下面的級聯sql,不然在是無法刪除a,b,c表的記錄的 alter table b add const...