程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql 取字段值逗號第一個數據的查詢語句

Mysql 取字段值逗號第一個數據的查詢語句

編輯:MySQL綜合教程

Mysql 取字段值逗號第一個數據的查詢語句。本站提示廣大學習愛好者:(Mysql 取字段值逗號第一個數據的查詢語句)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql 取字段值逗號第一個數據的查詢語句正文


正在看的ORACLE教程是:Oracle數據表分區的戰略。本文描寫經由過程統計剖析出病院信息體系需分區的表,對需分區的表選擇分區鍵,即找出包含在你的分區鍵中的列(表的屬性),對年夜型數據的治理比擬成心義, 本文的任務在Oracle8.1.6下完成。

  Oracle固然是一個年夜型的DBMS,但假如纰謬記載比擬多的表停止處置,依然施展不了Oracle治理年夜型數據的壯大功效,是以對某些表停止分區,具有以下長處:

  分區表中每一個分區可以在邏輯上以為是一個自力的對象;

  可以在一個表中的一個或多個分區長進行如刪除、挪動、析分等保護操作,而不會影響其它分區,具有分區自力性;

  假如選擇適合的分區戰略,會年夜年夜的加速數據的查詢速度。

  一 找出需分區的表

  本節描寫經由過程統計剖析出病院His體系需分區的表,對需分區的表找出包含在你的分區鍵中的列(表的屬性),即選擇分區鍵。

  1、基於拜訪頻度找出需分區的表

  Oracle8i許可拜訪數據庫中的審核信息,借助於搜集的審核信息,設計者可以或許肯定哪些表的數據是真正最頻仍拜訪的,即找出那些表,須要停止分區。

  翻開審核:在作為SYS或SYSSTEM登錄到數據庫後,動行以下劇本,翻開對象的審核功效。

set echo off feed off ver off pages 0
spool audon.sql
select 'audit select on '||owner||'.'||object_name||' by
access;'
from dba_objects
where object_type in ('VIEW','TABLE') and owner in
('ORDADM');
spool off
set echo on feed on ver on
  這些代碼的運轉將發生“audon.sql”的輸入文件,它包括上面清單中所示格局的語句

audit select on ORDADM.DOCTOR_ORDERS by access;
audit select on ORDADM.GROUP_ORDER_ITEMS by access;
audit select on ORDADM.GROUP_ORDER_MASTER by access;
audit select on ORDADM.ORDERS by access;
audit select on ORDADM.ORDERS_COSTS by access;
audit select on ORDADM.ORDERS_SHEET_IMAGE by access;
audit select on ORDADM.VITAL_SIGNS_REC by access;
  應用敕令@audon.sql激活上述代碼以翻開審核功效搜集搜集審核信息,樹立一個表以保留概要信息:

create table aud_summary (
obj_name varchar2(30),
owner varchar2(30),
hits number);
  將審核信息從dba_audit_object表中掏出並裝入概要表中:

insert into aud_summary
select obj_name,owner,count(*)
from dba_audit_object
group by obj_name,owner;
  封閉審核:

set echo off feed off ver off pages 0
spool audoff.sql
select 'noaudit select on '||owner||'.'||object_name|| '
by access;'
from dba_objects
where object_type in ('VIEW','TABLE') and owner in
('ORDADM');
spool off
set echo on feed on ver on
  這些代碼的運轉將發生“audoff.sql”的輸入文件。

  應用敕令@ audoff.sql激活上述代碼以封閉上述對象的審核功效。

  消除審核信息:

delete sys.aud$
  剖析審核信息

col obj_name form a30
col owner form a20
col hits form 99,990
selec obj_name,owner,hits from aud_summary;
OBJ_NAME OWNER COUNT(*)
----------- ------------- ----------
DOCTOR_ORDERS ORDADM 30309
DRUG_STOCK PHARMACY 11094
GROUP_ORDER_ITEMS ORDADM 1030
GROUP_ORDER_MASTER ORDADM 1196
ORDERS ORDADM 40421
ORDERS_COSTS ORDADM 10109
  以上是HIS體系臨床醫囑部門24小時內對表的拜訪情形,從下面的查詢得表1-1。

  表1-1

表 行數 射中率 doctor_orders 2052709 30309 drug_stock 2511 11094 group_order_item 3800 1030 group_order_master 186 1196 orders 1633010 40421 orders_costs 2403214 10109
  group_order_master( 醫囑套攴主記載) 、group_order_item(醫囑套攴明細), 表的行數比擬少,不合適分區;drug_stock(藥品庫存)固然存取頻率比擬高,但表的行數比擬少,是以也不合適分區。我們選擇表的行數比擬多、存取頻率比擬高的表作分區處置,如 doctor_orders、orders、orders_costs,斟酌到doctor_orders是大夫任務站上大夫開的醫囑,orders是由doctor_orders生成、護士任務站上履行的醫囑,兩個表構造相似,而醫囑與藥品、衛生資料、計費接洽比擬親密的是Orders,是以重點引見對表orders的處置。

  2、基於列值選擇分區鍵

  應用Sql*plus下用敕令Analyze搜集末分區表的統計信息,依照Oracle推舉的取樣20%停止剖析,並將統計成果保留在數據字典中。

Analyze table ORDADM.ORDERS estimate statistics
sample 20 percent;


  對DBA_TAB_COLUMNS數據字典視圖停止查詢

[NextPage]

發生表1-2

select table_name,column_name,num_distinct
from DBA_TAB_COLUMNS
where owner like 'ORDADM';
  表1-2

列 分歧的值 PATIENT_ID 28720 VISIT_ID 2 ORDER_NO 395 ORDER_SUB_NO 10 ORDER_CLASS 9 ORDER_CODE 825 ORDER_TEXT 1551 ORDERING_DEPT 15 START_DATE_TIME 1194176 STOP_DATE_TIME 636798    


  從表1-2中,我們可以看到欲分區表的各個候選分區鍵的

[1] [2] 下一頁

正在看的ORACLE教程是:Oracle數據表分區的戰略。散布頻譜,ORDER_CODE(醫囑代碼)鍵值沒有湧現一種平均散布,用它作分區鍵,顯著不適合;

  ORDER_CLASS(醫囑種別代碼)、ORDERING_DEPT(開醫囑科室代碼),鍵值湧現平均散布,如用它的各個鍵值作基於規模的分區,每一個分區具有的記載數比擬平均,但這類辦法關於天天增長上萬筆記錄的表來看,明顯不是最優的。假如選用START_DATE_TIME(醫囑開端時光)樹立規模分區,每個月的數據樹立一個分區,在每一個分區內基於ORDERING_DEPT樹立散列子分區,每個月的數據構成一個組合分區,會使每一個分區的記載數散布平均、查詢速度進步、易於備份和刪除。由於年夜多半的統計和查詢是在一個月的規模內,並且從現實的查詢後果看,跨月和跨年數據的統計和查詢速度,也比未分區的時刻年夜年夜延長,後果異常顯著。

    二 分區表的界說

Create Table orders (
 PATIENT_ID varchar2(10) not null, ORDER_NO number(4), ORDER_SUB_NO number(2),
 ..............
 ORDER_CLASS char(1),
 ORDER_TEXT varchar2(80),
 ORDER_CODE varchar2(10),
 .............
 START_DATE_TIME date
 STOP_DATE_TIME date
 .................
 ORDERING_DEPT varchar2(8)
 storage (initial 100M next 1M)
 PARTITION BY RANGE(START_DATE_TIME)
 SUBPARTITION BY HASH(ORDER_CODE)
 SUBPARTITIONS 3 STORE IN (ordersub1, ordersub 2, ordersub 3)
 (PARTITION orders200212 VALUES LESS THAN (to_date('2003-01-01 00:00: 00','yyyy-mm-dd hh24:mi:ss'))
 tablespace Tsp_Orders,
 PARTITION orders200301
 VALUES LESS THAN (to_date('2003-02-01 00:00: 00','yyyy-mm-dd hh24:mi:ss'))
 tablespace Tsp_Orders,,
 PARTITION orders 200302
 VALUES LESS THAN (to_date('2003-03-01 00:00: 00','yyyy-mm-dd hh24:mi:ss'))
 tablespace Tsp_Orders,,
 .....................
 PARTITION orders200402
 VALUES LESS THAN (to_date('2004-03-01 00:00: 00','yyyy-mm-dd hh24:mi:ss'))
 tablespace Tsp_Orders
 (SUBPARTITION ordersub1 TABLESPACE Tsp_Orders, SUBPARTITION ordersub 2 TABLESPACE Tsp_Orders,
SUBPARTITION ordersub3 TABLESPACE Tsp_Orders));
  在樹立的Orders表中,按每個月一個分區,從2002年12月開端,2004年02月止,共15個分區, PARTITION BY RANGE(START_DATE_TIME) 子句,表現用表的START_DATE_TIME屬性樹立規模分區,詳細的每一個分區名、時光規模,在PARTITION子句界說;SUBPARTITION BY HASH(ORDER_CODE)子句,表現用表的ORDER_CODE 屬性,在每一個分區下樹立散列子分區,詳細的每一個子分區名、地點表空間,在UBPARTITION子句界說。

  用上面ALTER TABLE數據界說語句為Orders樹立束縛和索引。

ALTER TABLE Orders ADD CONSTRAINT Pk_Orders KEY (Patient_id,
Visit_id,Order_no,Order_sub_no) USING INDEX PCTFREE 5 TABLESPACE Tsp_Orders;
  表1-3是用select count(*) from orders partition (分區名)語句,查詢出的名分區的記載數。

  表1-3

分區名 記載數 orders200301 87311 orders2200302 87553 orders2200303 107533 ............   orders200401 124812
  三 分區表的保護操作

  增加分區:

Alter Table orders Add partition orders200403
Aalues less (to_date('2004-04-01 00:00:00','yyyy-mm-dd hh24: mi:ss'))
Tablespace Tsp_Orders;
  刪除分區:

Alter Table table_name Drop Partition partition_name;
  裁斷分區:

Alter Table table_name Truncate Partition partition_name Storage;
  Oracle數據表分區小常識:

  為了簡化數據庫年夜表的治理,O r a c l e 8 及今後版本推出了分區選項。分區將表分別在若干分歧的表空間上,用分而治之的辦法來支持無窮收縮的年夜表,給年夜表在物理一級的可治理性。將年夜表朋分成較小的分區可以改良表的保護、備份、恢復、事務及查詢機能。針對以後社保及電信行業的年夜量平常營業數據, 可以推舉應用ORACLE8 的該選項。

  分區的長處:

  1 、加強可用性:假如表的一個分區因為體系毛病而不克不及應用,表的其他好的分區依然可使用;

  2 、削減封閉時光:假如體系毛病只影響表的一部門分區,那末只要這部門分區須要修復,故能比全部年夜表修復花的時光更少;

  3 、保護輕松:假如須要重建表,自力治理每一個分區比治理單個年夜表要輕松很多;

  4 、平衡I / O : 可以把表的分歧分辨別配到分歧的磁盤來均衡I / O 改良機能;

  5 、改良機能:對年夜表的查詢、增長、修正等操作可以分化到表的分歧分區來並行履行,可以使運轉速度更快;

  6 、分區對用戶通明,終究用戶感到不到分區的存在。

上一頁    

上一頁  [1] [2] 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved