-
所謂的垂直拆分,就是把原來一個(gè)有很多列的表拆分成多個(gè)表,這解決了表的寬度問題。通常垂直拆分可以按以下原則進(jìn)行:
把不常用的字段單獨(dú)存放到一個(gè)表中。
把大字段獨(dú)立存放到一個(gè)表中。
把經(jīng)常一起使用的字段放到一起。
查看全部 -
思考:反范式化后再查詢訂單信息
SELECT?a.用戶名,a.電話,a.地址,a.訂單ID,?a.訂單價(jià)格? FROM?`訂單表`?a
查看全部 -
對下面的表進(jìn)行反范式化后
查看全部 -
思考:如何查詢訂單信息?
SELECT?b.用戶名,b.電話,b.地址,a.訂單ID,?SUM(c.商品價(jià)價(jià)*c.商品數(shù)量)as?訂單價(jià)格? FROM?`訂單表`?a JOIN?`用戶表`?b?ON?a.用戶ID=b.用戶ID? JOIN?`訂單商品表`?c?ON?c.訂單ID=b.訂單ID? GROUP?BY?b.用戶名,b.電話,b.地址,a.訂單ID
查看全部 -
反范式化是指為了查詢效率的考慮把原本符合第三范式的表適當(dāng)的增加冗余,以達(dá)到優(yōu)化查詢效率的目的,反范式化是一種以空間來換取時(shí)間的操作。
查看全部 -
表的范式化和反范式化
查看全部 -
不符合第三范式要求的表存在下列問題:
數(shù)據(jù)余:(分類,分類描述)對于每一個(gè)商品都會(huì)進(jìn)行記錄
數(shù)據(jù)的插入異常
數(shù)據(jù)的更新異常
數(shù)據(jù)的刪除異常
查看全部 -
范式化是指數(shù)據(jù)庫設(shè)計(jì)的規(guī)范,目前說到范式化一般是指第三設(shè)計(jì)范式,也就是要求數(shù)據(jù)表中不存在非關(guān)鍵字段對任意候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三范式
商品名稱 價(jià)格 重量 有效期 分類 分類描述 可樂 3.00 250ml 2014.6 飲料 碳酸飲料 北冰洋 3.00 250ml 2014.7 飲料 碳酸飲料 ? ? ? ??
存在以下傳遞函數(shù)依賴關(guān)系:(商品名稱)->(分類)->(分類描述)
也就是說存在非關(guān)鍵字段“分類描述”對關(guān)鍵字段“商品名稱”的傳遞函數(shù)依賴。
查看全部 -
使用 bigint 來 IP 地址,利用 INET_ATON(), INET_NTOA() 兩個(gè)函數(shù)來進(jìn)行轉(zhuǎn)換?
CREATE?TABLE?sessions(id?INT?AUTO_INCREMENT?NOT?NULL,?ipaddress?BIGINT,?PRIMARY?KEY(id)); INSERT?INTO?sessions(ipaddress)?VALUES?(INET_ATON('192.168.0.1')); SELECT?INET_NTOA(ipaddress)?FROM?sessions;
查看全部 -
使用 int 來存儲(chǔ)日期時(shí)間,利用 FROM_UNIXTIMEO(), UNIX_ TIMESTAMP() 兩個(gè)函數(shù)來進(jìn)行轉(zhuǎn)換
CREATE?TABLE?test(id?INT?AUTO?INCREMENT?NOT?NULL ,?timestr?INT,?PRIMARY?KEY?(id); INSERT?INTO?test(timestr)?VALUES?(UNIX_TIMESTAMP('2014-06-01?13:12:00'); SELECT?FROM_UNIXTIME(timestr)?FROM?test;
查看全部 -
數(shù)據(jù)類型的選擇,重點(diǎn)在于合適二字,如何確定選擇的數(shù)據(jù)類型是否合適?
使用可以存下你的數(shù)據(jù)的最小的數(shù)據(jù)類型。
使用簡單的數(shù)據(jù)類型。Int 要比 varchar 類型在 mysql5 處理上簡單。
盡可能的使用 not null 定義字段。
盡量少用 text 類型,非用不可時(shí)最好考慮分表。
查看全部 -
刪除不用索引1234
目前 MySQL 中還沒有記錄索引的使用情況,但是在 PerconMySQL 和 MariaDB 中可以通過 INDEX_STATISTICS 表來查看那些索引未使用,但在 MySQL 中目前只能通過慢查日志配合 pt-index-usage 工具來進(jìn)行索引使用情況的分析。
pt-index-usage?\ ??-uroot?-p'?'\ ??mysql-slow.log
查看全部 -
查找重復(fù)及冗余索引
使用 pt- duplicate-key- checker 工具檢查重復(fù)及冗余索引
pt-duplicate-key-checker?\? -uroot?\? -p?"?\? -h?127.0.0.1
查看全部 -
重復(fù)及冗余索引
重復(fù)索引是指相同的列以相同的順序建立的同類型的索引,如下表中
primary?key?和?ID?列上的索引就是重復(fù)索引 create?table?test?( id?int?not?null?primay?key, name?varchar?(10)?not?null, titile?varchar?(50)?not?null, unique?(id) )?engine=innodb;
查看全部 -
在 where 從句,group by 從句,order by 從句,on 從句中出現(xiàn)的列
索引字段越小越好
離散度大的列放到聯(lián)合索引的前面
SELECT FROM payment WHERE staff_id 2 AND customer_id 584;
是 index(sftaff_id, customer_id)好?還是 index(customer_id, staff_id)好?
由于 customer_id 的離散度更大,所以應(yīng)該使用 index (customer_id, staff_Id)
查看全部
舉報(bào)