MySQL:聯合主鍵、索引
MySQL資料庫用聯合主鍵。用兩張表測試。
# 1分鐘資料表
CREATE TABLE md_1min2(
`d_1min` DATETIME(3),
`code` CHAR(16),
`open` FLOAT,
`high` FLOAT,
`low` FLOAT,
`close` FLOAT,
`volume` FLOAT,
PRIMARY KEY(`code`, `d_1min`)
) ENGINE=INNODB;
# 1分鐘資料表 CREATE TABLE md_1min3( `code` CHAR(16), `d_1min` DATETIME(3), `open` FLOAT, `high` FLOAT, `low` FLOAT, `close` FLOAT, `volume` FLOAT, PRIMARY KEY(`d_1min`, `code` ) ) ENGINE=INNODB;
兩張表,列名順序不一樣。
用了兩個欄位來建立了聯合主鍵。
查詢的時候發現是因為 Primary Key 的順序不同是造成查詢效率上的不同的原因,與表本身的列的順序無關。
執行查詢語句時的區別
EXPLAIN SELECT * FROM md_1min2 WHERE `code` = '601318.SH';
id select_type table partitions type
possible_keys key key_len ref rows filtered Extra
------ ----------- -------- ---------- ------ ------------- ------- ------- ------ ------ -------- --------
1 SIMPLE md_1min2 (NULL) ref PRIMARY PRIMARY 48 const 1 100.00 (NULL)
EXPLAIN SELECT * FROM md_1min3 WHERE `code` = '601318.SH';
id select_type table partitions type
possible_keys key key_len ref rows filtered Extra
------ ----------- -------- ---------- ------ ------------- ------ ------- ------ ------ -------- -------------
1 SIMPLE md_1min3 (NULL) ALL (NULL) (NULL) (NULL) (NULL) 1 100.00 Using where
*當一個索引有多個列構成時,應注意將選擇性強的列放在前面。僅僅前後次序的不同,效能上就可能出現數量級的差異。
至於為什麼資料庫列名要用數字鍵盤上 1 左邊的那個小點點引起來,是因為open是關鍵字…,引起來以後MySQL就不會把欄位名誤認為是關鍵字了。
對於這種需要經常訪問的表,SQL語句的優化、資料庫引擎的選擇就非常重要了!
另外,用每天DELETE FROM xxx來清空這張表,可能還會留下一些碎片。是不是乾脆直接DROP以後再CREATE,效能會好一些?
相關推薦
MySQL:聯合主鍵、索引
MySQL資料庫用聯合主鍵。用兩張表測試。 # 1分鐘資料表 CREATE TABLE md_1min2( `d_1min` DATETIME(3), `code` CHAR(16), `open` FLOAT, `high` FLOAT, `low` FLOAT, `c
複合主鍵與聯合主鍵、索引與聯合(複合)索引
前幾天面試時被問到了MySql中聯合索引使用與生效問題;回來順便看了一下複合主鍵與聯合主鍵,查漏補缺,慢慢學習吧。 一、複合主鍵與聯合主鍵 1、複合主鍵:指表的主鍵含有一個以上的欄位組成,不使用無業務含義的自增id作為主鍵。 create table test (
mysql 聯合主鍵的作用 索引的作用
聯合主鍵就是用2個或2個以上的欄位組成主鍵。用這個主鍵包含的欄位作為主鍵,這個組合在資料表中是唯一,且加了主鍵索引。 可以這麼理解,比如,你的訂單表裡有很多欄位,一般情況只要有個訂單號bill_no做主鍵就可以了,但是,現在要求可能會有補 充訂單,使用相同的訂單號,那麼這時單
MySQL中的查詢約束語句和主鍵、聯合主鍵、外來鍵
查詢語句 過濾空值 過濾空值 如果該值是空的 就當做0來處理 SELECT IFNULL(欄位名,0) FROM 表名 聚合函式 排序 利用ORD
超鍵、候選鍵、主鍵、外來鍵、聯合主鍵、複合主鍵
首先看看各種鍵的定義: 超鍵(super key):在關係中能唯一標識元組的屬性集稱為關係模式的超鍵(只要有一個鍵唯一,再隨便組其他的鍵,合起來叫主鍵) 候選鍵(candidatekey):不含有多餘屬性的超鍵稱為候選鍵(最小的超鍵,ID,身份證號) 主鍵(primary key):
Oracle 新增主鍵、索引、刪除主鍵、索引
--刪除表主鍵 ALTER TABLE jw_jxrw_wxlsrwkcb DROP CONSTRAINT PK_JW_JXRW_WXLSRWKCB; --刪除索引 drop index PK_JW_
Mysql的聯合主鍵
mysql的聯合主鍵:用2個欄位(或者多個欄位,後面具體都是用2個欄位組合)來確定一條記錄,說明,這2個欄位都不是唯一的,2個欄位可以分別重複,這麼設定的好處,可以很直觀的看到某個重複欄位的記錄條數。 在mysql當中我們經常認為主鍵只能設定一個,那如果我們想設定兩個呢?如下圖: CREATE TABL
Mysql:小主鍵,大問題
今日格言:讓一切迴歸原點,迴歸最初的為什麼。 本篇講解 Mysql 的主鍵問題,從為什麼的角度來了解 Mysql 主鍵相關的知識,並拓展到主鍵的生成方案問題。再也不怕被問到 Mysql 時只知道 CRUD 了。 一、為什麼需要主鍵 資料記錄需具有唯一性(第一正規化) 資料需要關聯 join 資料庫底層索
mysql索引、主鍵、唯一索引、聯合索引的區別(索引的建立原則和注意事項)
索引對資料庫效能的影響? 本質:縮小查詢範圍。大大減少需要掃描的資料量。大大提高查詢的速度,降低寫的速度,佔用磁碟。將隨機I/O變成順序I/O 特大的表怎麼解決查詢問題? 分割槽。 主鍵索引和唯一索引的區別? 一個表只能有一個主鍵索引,但可以有多個唯一索引, 主鍵索引是唯一索
SQL Server(MySql)中的聯合主鍵(聯合索引) 索引分析
判斷 reat 系統 lap creat insert 結果 問題 select 最近有人問到這個問題,之前也一直沒有深究聯合索引具體使用邏輯,查閱多篇文章,並經過測試,得出一些結論 測試環境:SQL Server 2008 R2 測試結果與MySql聯合索引查詢機制類似,
Mysql主鍵、外鍵和索引的區別
post 標識 mysq 個數 字段 一個 區別 允許 mysql 定義主鍵--唯一標識一條記錄,不能有重復的,不允許為空外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重復的, 可以是空值索引--該字段沒有重復值,但可以有一個空值 作用主鍵--用來保證數據完整性外鍵--
mysql數據庫基礎(2)索引、主鍵、復合主鍵、外鍵
刪除表 工資 adb birt column 參考 ext 賦值 var 增、刪、改、查 加“”表示為普通字符 mysql> insert into t9 values("NULL",21,"game,flim"); ++++++++++++++++++++++++
mysql資料庫基礎(2)索引、主鍵、複合主鍵、外來鍵
增、刪、改、查 加“”表示為普通字元 mysql> insert into t9 values("NULL",21,"game,flim"); +++++++++++++++++++++++++++++++ 新增新欄位 mysql> alter table t4
MySQL:04---資料完整性(非空、唯一、主鍵、check、預設值、外來鍵約束),級聯設定,表自增列
一、資料完整性 1.概念:指資料能正確反映實際情況 2.分類 實體完整性:識別符號或主鍵完整性(主鍵、唯一值約束) 域完整性:限制資料型別、格式、取值範圍(檢查、預設值、外來鍵約束) 引用完整性:輸入或刪除時,不能存在引用不存在的值(外來鍵約束) 自定義完整性
MySQL入門——修改資料表4:新增主鍵約束、顯示錶結構、新增唯一約束
這裡的新增主鍵約束、新增唯一約束,指的是列級約束,是在資料表建立以後再新增的。 例如,給user3表中的id欄位新增主鍵約束: ALTER TABLE user3 ADD PRIMARY KE
mysql-不恰當的update語句使用主鍵和索引導致mysql死鎖
行修改 sql錯誤 狀態 還要 錯誤日誌 示意圖 http 概率 最小 背景知識:MySQL有三種鎖的級別:頁級、表級、行級。 MyISAM和MEMORY存儲引擎采用的是表級鎖(table-level locking);BDB存儲引擎采用的是頁面鎖(page-level l
利用PHP腳本輔助MySQL數據庫管理2-表主鍵表索引
dbi ble nbsp 管理 item tab count key root <?php $dbi = new DbMysql; $dbi->dbh = ‘mysql://root:[email protected]/coffeetest‘; $ma
【第三章】字段約束:數據完整性、主鍵、外鍵、非空、默認值、自增、唯一性
索引 記錄 incr efault 主鍵 pri 增長 不可 作用 一、表完整性約束 作用:用於保證數據的完整性和一致性==============================================================約束條件
MySQL主鍵與索引的區別和聯系
效率 mysql 數據庫管理 但是 sql 多個 ron 主鍵 相同 關系數據庫依賴於主鍵,它是數據庫物理模式的基石。主鍵在物理層面上只有兩個用途: 惟一地標識一行。 作為一個可以被外鍵有效引用的對象。 索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分
mysql查詢指定庫的所有表的記錄數、外來鍵、索引、檢視、觸發器等
-- 查詢指定庫的所有表資料行數 use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = 'cs_lanzhou' order by table