mysql索引组织结构_MySQL中创建及优化索引组织结构的思路(3)
4.根據業務規則描述需要使用操縱數據的SQL語句
EXPLAINSELECT*FROMgoods_orderWHERE`order_id`=40918986;
SELECT*FROMgoods_orderWHERE`order_id`IN(40918986,40717328,30923040...)ORDERBYgmt_modifyDESC;
UPDATEgoods_orderSETgmt_modify=NOW(),....WHERE`order_id`=40717328ANDgoods_id=4248;
SELECTCOUNT(*)FROMgoods_orderWHEREdepot_id=0ORDERBYgmt_modifyDESCLIMIT?0,50;
SELECT*FROMgoods_orderWHEREdepot_id=6ANDpacket_id=0ORDERBYgmt_modifyDESCLIMIT?0,50;
SELECTCOUNT(*)FROMgoods_orderWHEREgoods_id=4248ANDorder_status=0ANDorder_type=1
SELECT*FROMgoods_orderWHEREgoods_id=4248ANDorder_status=0ANDorder_type=1ORDERBYgmt_modifyDESCLIMIT?0,50;
SELECT*FROMgoods_orderWHEREgmt_modify>=’?2011-04-06’;
8條SQL語句按觸發其執行的用戶分類:
● 前臺用戶點擊觸發的操作而會執行的SQL語句為:(1)、(2)、(3);
● 后臺內部用戶點擊觸發的操作而會執行的SQL語句為:(1)、(2)、(3)、(4)、(5)、(6)、(7);
● 后臺系統自動定期執行:(4)、(5)、(6)、(7),工作時間正常情況每隔15分鐘執行一次,以檢查是否有已付款而沒有準備貨物的訂單、是否有收款而未發貨的訂單等;
● 統計分析系統定期導出數據而執行的SQL語句為:(8),頻率為每24小時一次;
我們再分析上述列出來的SQL,分為2類,一類是讀操作的SQL(備注:SELECT操作),另外一類為修改性操作(備注:UPDATE、DELETE操作),分別如下:
SELECT 的WHERE子句、GROUP BY子、ORDER BY 子句和HAVING 子句中,出現的字段:
(1). order_id
(2). order_id+gmt_modify
(3). depot_id+gmt_modify
(4). depot_id+packet_id+gmt_modify
(5). goods_id+order_status+order_type
(6). goods_id+order_status+order_type+gmt_modify
(7). gmt_modify
修改性操作的WHERE子句中出現的條件字段:
(8). order_id+ goods_id
我們已經存在主鍵索引:PRIMARY KEY(order_id,`goods_id`),另外考慮到此表數據的操作以SELECT和INSERT為主,UPDATE的SQL量其次,再根據上述SQL語句,為此我們可以初步確定需要創建的索引:
ALTERTABLEgoods_order
ADDINDEXidx_goodsID_orderType_orderStatus_gmtmodify(goods_id,order_type,order_status,gmt_modify),
ADDINDEXidx_depotID_packetID_gmtmodify(depot_id,packet_id,gmt_modify);
總結
以上是生活随笔為你收集整理的mysql索引组织结构_MySQL中创建及优化索引组织结构的思路(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 发送post请求json,thi
- 下一篇: C语言挂载文件夹,使用autofs 按需