-
所謂的垂直拆分,就是把原來一個有很多列的表拆分成多個表,這解決了表的寬度問題。通常垂直拆分可以按以下原則進行:
把不常用的字段單獨存放到一個表中。
把大字段獨立存放到一個表中。
把經常一起使用的字段放到一起。
查看全部 -
思考:反范式化后再查詢訂單信息
SELECT?a.用戶名,a.電話,a.地址,a.訂單ID,?a.訂單價格? FROM?`訂單表`?a
查看全部 -
對下面的表進行反范式化后
查看全部 -
思考:如何查詢訂單信息?
SELECT?b.用戶名,b.電話,b.地址,a.訂單ID,?SUM(c.商品價價*c.商品數量)as?訂單價格? FROM?`訂單表`?a JOIN?`用戶表`?b?ON?a.用戶ID=b.用戶ID? JOIN?`訂單商品表`?c?ON?c.訂單ID=b.訂單ID? GROUP?BY?b.用戶名,b.電話,b.地址,a.訂單ID
查看全部 -
反范式化是指為了查詢效率的考慮把原本符合第三范式的表適當的增加冗余,以達到優化查詢效率的目的,反范式化是一種以空間來換取時間的操作。
查看全部 -
表的范式化和反范式化
查看全部 -
不符合第三范式要求的表存在下列問題:
數據余:(分類,分類描述)對于每一個商品都會進行記錄
數據的插入異常
數據的更新異常
數據的刪除異常
查看全部 -
范式化是指數據庫設計的規范,目前說到范式化一般是指第三設計范式,也就是要求數據表中不存在非關鍵字段對任意候選關鍵字段的傳遞函數依賴則符合第三范式
商品名稱 價格 重量 有效期 分類 分類描述 可樂 3.00 250ml 2014.6 飲料 碳酸飲料 北冰洋 3.00 250ml 2014.7 飲料 碳酸飲料 ? ? ? ??
存在以下傳遞函數依賴關系:(商品名稱)->(分類)->(分類描述)
也就是說存在非關鍵字段“分類描述”對關鍵字段“商品名稱”的傳遞函數依賴。
查看全部 -
使用 bigint 來 IP 地址,利用 INET_ATON(), INET_NTOA() 兩個函數來進行轉換?
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 來存儲日期時間,利用 FROM_UNIXTIMEO(), UNIX_ TIMESTAMP() 兩個函數來進行轉換
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;
查看全部 -
數據類型的選擇,重點在于合適二字,如何確定選擇的數據類型是否合適?
使用可以存下你的數據的最小的數據類型。
使用簡單的數據類型。Int 要比 varchar 類型在 mysql5 處理上簡單。
盡可能的使用 not null 定義字段。
盡量少用 text 類型,非用不可時最好考慮分表。
查看全部 -
刪除不用索引1234
目前 MySQL 中還沒有記錄索引的使用情況,但是在 PerconMySQL 和 MariaDB 中可以通過 INDEX_STATISTICS 表來查看那些索引未使用,但在 MySQL 中目前只能通過慢查日志配合 pt-index-usage 工具來進行索引使用情況的分析。
pt-index-usage?\ ??-uroot?-p'?'\ ??mysql-slow.log
查看全部 -
查找重復及冗余索引
使用 pt- duplicate-key- checker 工具檢查重復及冗余索引
pt-duplicate-key-checker?\? -uroot?\? -p?"?\? -h?127.0.0.1
查看全部 -
重復及冗余索引
重復索引是指相同的列以相同的順序建立的同類型的索引,如下表中
primary?key?和?ID?列上的索引就是重復索引 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 從句中出現的列
索引字段越小越好
離散度大的列放到聯合索引的前面
SELECT FROM payment WHERE staff_id 2 AND customer_id 584;
是 index(sftaff_id, customer_id)好?還是 index(customer_id, staff_id)好?
由于 customer_id 的離散度更大,所以應該使用 index (customer_id, staff_Id)
查看全部
舉報