新聞中心
總結MySQL建表、查詢優(yōu)化的一些實用小技巧
MySQL建表階段是非常重要的一個環(huán)節(jié),表結構的好壞、優(yōu)劣直接影響著后續(xù)的管理維護,趕在明天上班前分享總結個人MySQL建表、MySQL查詢優(yōu)化積累的一些實用小技巧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供黃島企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計、網(wǎng)站制作、H5技術、小程序制作等業(yè)務。10年已為黃島眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。
技巧一、數(shù)據(jù)表冗余記錄添加時間與更新時間
我們用到的很多數(shù)據(jù)表大多情況下都會有表記錄的“添加時間(add_time)”,我建議大家再新增一個記錄“更新時間(update_time)”字段,在我的工作里需要為市場部、運營部等建立各種報表,而很多報表里的數(shù)據(jù)都是需要到大記錄表里去查詢的,如果直接查詢大表的話,查詢速度相當慢。那么,我們的解決辦法就是建立各種數(shù)據(jù)快照,數(shù)據(jù)快照都是通過腳本定時跑的。假如,哪一天原始數(shù)據(jù)表出現(xiàn)了問題,那么快照數(shù)據(jù)也會有問題,這個時候我們的快照腳本就得重新跑一份修復好了的數(shù)據(jù),這樣有了update_time更新時間這個字段,我們就能很快定位記錄更新的時間。
技巧二、不要拋棄insert
ignore
into與replace
into
大家肯定寫過一些腳本循環(huán)將記錄插入到數(shù)據(jù)表,例如使用PHP腳本。如果期間的一條SQL插入失敗,那么后續(xù)的插入將終止,你可以在腳本里繞過這個插入錯誤,一個好的辦法是使用ignore關鍵字來屏蔽插入錯誤。如果,你的數(shù)據(jù)表里已經(jīng)存在有將要插入的相同記錄,那么這個時候就會產(chǎn)生插入報錯,使用
insert
ignore
into將繞開這個錯誤,繼續(xù)下一條記錄的插入。
如果你的表結構設計了唯一索引的話,那么使用replace
into來更新你的數(shù)據(jù)表記錄再好不過了,尤其是你在寫一個腳本的時候,你就不需要在腳本里先查詢數(shù)據(jù)表是否存在該條記錄,如果存在,則更新;如果不存在則插入。你可以直接使用replace
into,它會自動到數(shù)據(jù)表檢測,如果在唯一索引字段存在該值,則會先刪除該條記錄,然后再插入新記錄;如果唯一索引字段不存在該值,則直接插入數(shù)據(jù)表,簡單且非常實用。
技巧三、給你的表建立唯一索引
很多情況下建立表唯一索引,能給我們省下很多麻煩事,想上面說的replace
into就必須是有唯一索引,當然,很多人喜歡用到的自增主鍵ID盡管也是唯一索引,我建議是能在其他經(jīng)常出現(xiàn)在where條件屁股后面的字段,并且值是唯一的話可以加個索引甚至唯一索引,查詢速度將會提高很多。
說在最后:當然,insert
ignore
into與replace
into大家要根據(jù)自己的需求來確定,不一定就適合你現(xiàn)在的需求;我只是提示大家還有這么些個實用的小知識大家可以靈活運用到項目里邊。
MYSQL數(shù)據(jù)庫中怎么建立一個表呢?
1、打開Navicat for MySQL,找到要創(chuàng)建數(shù)據(jù)庫中數(shù)據(jù)表
2、接著我們在“表”上面單擊鼠標右鍵,然后點擊“新建表”
3、然后,右邊就會出現(xiàn)設計表的界面,這里可以設置表的字段名,類型,長度以及是否為null等
4、設計完數(shù)據(jù)表之后,點擊“保存”按鈕就OK了。
5、我們在其中輸入表名就點擊確定就可以了,表名可以根據(jù)自己的需求來設置
MySQL新建查詢怎么打?
可以用 命令"show PROCEDURE status"查看所有的存儲過程或檢索系統(tǒng)表"mysql.proc"來查詢已有的存儲過程。
例如:
用show PROCEDURE status命令查看:
-- 查看所有的存儲過程
show PROCEDURE status;
-- 查看特定數(shù)據(jù)庫存儲過程
show PROCEDURE status where db='test';
-- 用指定的登錄名查看該用戶創(chuàng)建的存儲過程
show PROCEDURE status where definer='root@localhost'; -- @localhost為用戶登錄位置(本地登錄)
-- 查看指定時間段創(chuàng)建存儲過程
show PROCEDURE status where created between '2017-02-17 00:00:00'
and '2017-02-17 23:59:59';
用系統(tǒng)表mysql.proc來查看:
-- 查看所有的存儲過程信息
select * from mysql.proc;
-- 查看特定數(shù)據(jù)庫里的存儲過程
select * from mysql.proc where db='test';
-- 查看某個用戶定義的存儲過程
select * from mysql.proc where definer='root@localhost';
-- 查看某時間段創(chuàng)建的存儲過程
select * from mysql.proc where created between '2017-02-17 00:00:00'
and '2017-02-17 23:59:59';
mysql怎么建立表
MySQL 提供了多種創(chuàng)建索引的方法:
1) 使用 CREATE INDEX 語句
可以使用專門用于創(chuàng)建索引的 CREATE INDEX 語句在一個已有的表上創(chuàng)建索引,但該語句不能創(chuàng)建主鍵。
語法格式:
CREATE 索引名 ON 表名 (列名 [長度] [ ASC | DESC])
語法說明如下:
索引名:指定索引名。一個表可以創(chuàng)建多個索引,但每個索引在該表中的名稱是唯一的。
表名:指定要創(chuàng)建索引的表名。
列名:指定要創(chuàng)建索引的列名。通??梢钥紤]將查詢語句中在 JOIN 子句和 WHERE 子句里經(jīng)常出現(xiàn)的列作為索引列。
長度:可選項。指定使用列前的 length 個字符來創(chuàng)建索引。使用列的一部分創(chuàng)建索引有利于減小索引文件的大小,節(jié)省索引列所占的空間。在某些情況下,只能對列的前綴進行索引。索引列的長度有一個最大上限 255 個字節(jié)(MyISAM 和 InnoDB 表的最大上限為 1000 個字節(jié)),如果索引列的長度超過了這個上限,就只能用列的前綴進行索引。另外,BLOB 或 TEXT 類型的列也必須使用前綴索引。
ASC|DESC:可選項。ASC指定索引按照升序來排列,DESC指定索引按照降序來排列,默認為ASC。
2) 使用 CREATE TABLE 語句
索引也可以在創(chuàng)建表(CREATE TABLE)的同時創(chuàng)建。在 CREATE TABLE 語句中添加以下語句。語法格式:
CONSTRAINT PRIMARY KEY [索引類型] (列名,…)
在 CREATE TABLE 語句中添加此語句,表示在創(chuàng)建新表的同時創(chuàng)建該表的主鍵。
語法格式:
KEY | INDEX [索引名] [索引類型] (列名,…)
在 CREATE TABLE 語句中添加此語句,表示在創(chuàng)建新表的同時創(chuàng)建該表的索引。
語法格式:
UNIQUE [ INDEX | KEY] [索引名] [索引類型] (列名,…)
在 CREATE TABLE 語句中添加此語句,表示在創(chuàng)建新表的同時創(chuàng)建該表的唯一性索引。
語法格式:
FOREIGN KEY 索引名 列名
在 CREATE TABLE 語句中添加此語句,表示在創(chuàng)建新表的同時創(chuàng)建該表的外鍵。
在使用 CREATE TABLE 語句定義列選項的時候,可以通過直接在某個列定義后面添加 PRIMARY KEY 的方式創(chuàng)建主鍵。而當主鍵是由多個列組成的多列索引時,則不能使用這種方法,只能用在語句的最后加上一個 PRIMARY KRY(列名,…) 子句的方式來實現(xiàn)。
Mysql中怎么用創(chuàng)建表
工具/材料
Navicat
01
我們可以利用Navicat這個客戶端工具來創(chuàng)建表。
打開Navicat,連接上要操作的數(shù)據(jù)庫,點擊打開這個庫。
02
打開后,在右邊的視圖上就可以看到這個庫里所有的表了。
03
在這里右鍵點擊空白的地方,點擊菜單里的‘New Table’
04
點擊后,就會創(chuàng)建一個新的表了,我們在這里設置表的字段,比如設置了二個字段,id,和name,
05
按下快捷鍵ctrl+s就會保存這個新建的表,先輸入表的名字,點擊ok按鈕就行了。
06
在表視圖里就可以看到剛才建好的表了。
分享題目:mysql怎么建立查詢表,mysql中如何創(chuàng)建表
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/phgcsd.html


咨詢
建站咨詢
