索引的作用就是快速找出在一個列上用一特定值的行。如果沒有索引,MySQL不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。 索引的類型: 先寫一個建表語句: CREATE TABLE `t_order` ( `id` int(11) unsigned NOT NULL AUTO_INCR ...
索引的作用就是快速找出在一個列上用一特定值的行。如果沒有索引,MySQL不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。
索引的類型:
先寫一個建表語句:
CREATE TABLE `t_order` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`order_no` varchar(20) NOT NULL COMMENT '訂單編號',
`ibank_order_no` varchar(22) DEFAULT NULL COMMENT '銀碼頭訂單號',
`user_id` varchar(16) NOT NULL COMMENT '用戶id',
`member_id` varchar(16) DEFAULT NULL COMMENT '會員id',
`member_fee` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '會員費',
`member_type` varchar(10) DEFAULT NULL COMMENT '會員類型',
`channel` int(4) NOT NULL DEFAULT '0' COMMENT '用戶渠道(0 儂要貸 1銀碼頭)',
`loan_purpose` varchar(36) NOT NULL COMMENT '借款用途',
`loan_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '借款金額',
`borrow_time` tinyint(4) NOT NULL DEFAULT '0' COMMENT '借款時長',
`borrow_periods` tinyint(4) NOT NULL DEFAULT '1' COMMENT '借款期數',
`real_loan_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '實際借款金額',
`repay_total_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '應還款總金額',
`interest` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '利息',
`annualized_rate` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '年化利率',
`synthetical_fee` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '綜合費用',
`bank_account` varchar(30) NOT NULL DEFAULT '' COMMENT '打款銀行卡號',
`bank_name` varchar(20) NOT NULL DEFAULT '' COMMENT '打款銀行名稱',
`order_status` smallint(6) NOT NULL DEFAULT '10' COMMENT '訂單狀態 審核中/審核完成/待放款/放款失敗/已放款',
`audit_status` varchar(10) NOT NULL DEFAULT '0' COMMENT '審核結果:1通過0拒絕',
`who_audit` int(4) NOT NULL DEFAULT '0' COMMENT '機審還是人審(0:機審|1:人審)',
`audit_reason` varchar(255) NOT NULL DEFAULT '' COMMENT '詳細原因碼表',
`loan_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '借款時間',
`pay_time` datetime DEFAULT NULL COMMENT '放款時間',
`promise_repayment_time` datetime DEFAULT NULL COMMENT '約定還款時間',
`fund_code` varchar(10) NOT NULL DEFAULT '' COMMENT '資金渠道',
`business` varchar(36) NOT NULL DEFAULT 'nyd' COMMENT '會員使用業務範圍',
`test_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否測試申請 0:是;1:不是',
`delete_flag` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否已刪除 0:正常;1:已刪除',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加時間',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
`update_by` varchar(36) NOT NULL DEFAULT 'sys' COMMENT '最後修改人',
`fail_type` tinyint(2) NOT NULL DEFAULT '0' COMMENT '放款失敗類型 0:預設值 1:系統放款失敗 2:前端手工取消放款',
`pay_fail_reason` varchar(300) DEFAULT NULL COMMENT '放款失敗原因',
PRIMARY KEY (`id`),
UNIQUE KEY `order_no` (`order_no`),
KEY `idx_user_id` (`user_id`),
KEY `idx_status` (`order_status`),
KEY `ix_create_time` (`create_time`),
KEY `create_time` (`create_time`),
KEY `update_time` (`update_time`),
KEY `ibank_order_no` (`ibank_order_no`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='訂單信息表';
1.常規索引
index或key,就是所謂的常規索引,也叫作普通索引。
2. 主鍵索引
主鍵索引(Primary Key),也簡稱主鍵。它可以提高查詢效率,並提供唯一性約束。一張表中只能有一個主鍵。
3.唯一索引
唯一索引(Unique Key),可以提高查詢效率,並提供唯一性約束。一張表中可以有多個唯一索引。
4.全文索引
全文索引(Full Text),可以提高全文搜索的查詢效率,一般使用Sphinx替代。但Sphinx不支持中文檢索,Coreseek是支持中文的全文檢索引擎,也稱作具有中文分詞功能的Sphinx。實際項目中,我們用到的是Coreseek。
5.外鍵索引
外鍵索引(Foreign Key),簡稱外鍵,它可以提高查詢效率,外鍵會自動和對應的其他表的主鍵關聯。外鍵的主要作用是保證記錄的一致性和完整性。