案例 大資料量的使用者表
三張表:qqlogin0、qqlogin1、qqlogin2 ,將使用者id%3,按結果放入不同的表當中
create table qqlogin0(
id int unsigned not null primary key,/* 這個id不能設定自增長 */
name varchar(32) not null default '',
pwd varchar(32) not null default ''
)engine=myisam default charset=utf8;
create table qqlogin1(
id int unsigned not null primary key,/* 這個id不能設定自增長 */
name varchar(32) not null default '',
pwd varchar(32) not null default ''
)engine=myisam default charset=utf8;
create table qqlogin2(
id int unsigned not null primary key,/* 這個id不能設定自增長 */
name varchar(32) not null default '',
pwd varchar(32) not null default ''
)engine=myisam default charset=utf8;
開發 adduser.php ,因為在新增使用者時,各個使用者id應該確認下,通常我們使用乙個輔助表 uuid 表,它可以幫助我們生成乙個編號。
uuid表:
create table uuid (
id int unsigned not null auto_increment primary key
)engine=myisam default charset=utf8;
我們在提供檢索時,應該根據業務的需求,找到分表的標準,並在檢索頁面約束使用者的檢索方式,而且要配合分頁。如果有大表檢索的需求,也是少數的。
新增使用者時:adduser.php
<?php
$conn
=mysql_connect
('localhost'
,'root'
,'2012o912@');
if(!$conn
)mysql_select_db
('temp'
,$conn);
$sql
="insert into uuid values (null)"
;$res
=mysql_query
($sql
,$conn);
if($res
)else
}else
?>
查詢使用者時,checkuser.php
<?php
$conn
=mysql_connect
('localhost'
,'root'
,'2012o912@');
if(!$conn
)mysql_select_db
('temp'
,$conn);
$qqid
=intval
($_get
['id'])
;$tablename
='qqlogin'
.$qqid%4
;$sql
="select * from $tablename
where id='$qqid'";
$res
=mysql_query
($sql
,$conn);
if($res
)else
?>
案例 學生答題系統
考試結果表
id stuno questionid answer(text) grade
1 1 20 [結果。。。] 30
問題表id question
20 請寫一篇散文
需求: 查處1號學生20題得分情況,但answer欄位內容非常大,對查詢速度有影響
解決:把answer(對查詢速度影響較大的字段)單獨的提出來,放到另外一張表
回答表 answer
id answer
1 結果。。。
相應的修改考試結果表
id stuno questionid grade
1 1 20 30
總結:把某個表的某些字段,這些字段,在查詢時,並不實時關心,但資料量很大, 我們建議大家可以 把這些字段單獨的放到另外一張表,從而提高效率。但是不要忘記關聯關係。表的字段定義原則是保小不保大,盡量節省空間
如果資料庫壓力很大,一台機器支撐不了,可以用mysql複製實現多台機器同步,將資料庫壓力分散
MySQL優化 分割槽
分割槽型別 range分割槽 基於乙個給定的連續區間範圍 區間要求連續並且不能重疊 把資料分配到不同的分割槽 list分割槽 類似於range分割槽,區別在於list分割槽是居於列舉出的值列表分割槽,range是基於給定的連續區間範圍分割槽 hash分割槽 基於給定的分割槽個數,把資料分配到不同的分...
mysql 分庫分表 開源 MySQL優化分庫分表
昨天面試新人的時候,遇到了這麼乙個問題,按照自己的想法大體聊了一些,但大多是感性的,並沒有完整的了解why and how.之一,為什麼要分表?分表,按形式,有水平分表和主附分表。水平分表常見於按id取模或者按日期將相同表結構的內容雜湊到不同的表上,主附分表常見於有對應關係的多張表,通過主外來鍵進行...
mysql優化 優化分頁查詢
create table goods id bigint 20 unsigned not null auto increment,name varchar 10 default null,price double default null,create time datetime default n...