資料庫的相關經驗總結

2022-04-03 10:58:12 字數 2529 閱讀 7496

sql server:

select top 10 * from testtable where id not in (select top 20  id  from testtable)

oracle:

select * from (select t.*,rownum rowid from testtable t) where rowid between 21 and 30

注:(distinct關鍵字只能篩選出表中所有列都相同的資料)

sql server和oracle:

<1> 先建立乙個與當前操作表(testtable)相同結構的表(testtable_temp)作為臨時表

建立臨時表:

sql server中的寫法如下:

create table  testtable_temp

id  int,

name nvarchar(50)

oracle中的寫法如下:

create table  testtable_temp

id  number,

name nvarchar2(50)

<2> 再為臨時表(testtable_temp)建立乙個索引(sql server2005版本中的操作):

記住勾選上「常規」中的  、新增索引鍵的表列(如果新增了全部表列,效果將會和使用                      distinct的效果一樣)和「選項」中的  這個兩個選項框.

<3> 將testtable表中的資料裝入臨時表testtable_temp(由於設定了索引就會自動過濾掉重複的資料)

語句如下:

insert into testtable_temp select * from testtable(此時臨時表就是我們想得到的資料)

<4> 刪除testtable表中的資料

語句如下:

delete testtable

<5> 將臨時表中的資料匯入testtable

語句如下:

insert into testtable select * from testtable_temp

<6> 刪除臨時表testtable_temp

語句如下:

drop table testtable_temp

sqlserver:

select top 10 * from test_table order by newid()

oracle:

select * from test_table where  rownum<10 order by sys_guid()

sql server和oracle:

如表aaid

othera12

23表bbid

otherb23

34inner join :

select * from a inner join b on a.aid=b.bid

求a,b中aid=bid鏈結鏈結集合

aidothera

bidotherb23

23left join :

select * from a left join b on a.id=b.id

求a,b中aid=bid鏈結鏈結集合,加a中

和b匹配的集合,a中照舊,b的字段以空填。

aidothera

bidotherb12

nulnul23

23right join :

select * from a rright join b on a.aid=b.bid

求a,b中aid=bid鏈結鏈結集合,加b中

和a匹配的集合,b中照舊,a的字段以空填。

aidothera

bidotherb23

23null

null34

<1>定義

聚集索引:物理儲存按照索引排序,就像字典正文,我們按照正文的字母順序就能找到我們的記錄。(對查字典很熟  的人)

非聚集索引:物理儲存不按照索引排序,就像偏旁查字法目錄,每個偏旁目錄下的字的頁碼不是順序的。

<2>比較

聚集索引:插入資料時速度要慢(時間花費在「物理儲存的排序」上,也就是首先要找到位置然後插入)查詢資料比非聚集資料的速度快。

<3>理解

聚集索引

每個表只能有乙個,預設主鍵是聚集索引,但經常業務上是不合適的,一定要將聚集索引建立在:

²        您最頻繁使用的、用以縮小查詢範圍的字段上;

²        您最頻繁使用的、需要排序的字段上。

非聚集索引

每個表可以建立多個

<4>使用環境 

動作描述

使用聚集索引

使用非聚集索引

列經常被分組排序應應

返回某範圍內的資料應不應

乙個或極少不同值

不應不應

小數目的不同值應不應

大數目的不同值不應應

頻繁更新的列不應應

外來鍵列應

應主鍵列應應

頻繁修改索引列不應應

資料庫相關知識以及經驗總結

已停更,轉移至有道雲筆記 mysql 優化之explain你的select show profile,慢查詢 explain select from answer where question id in 4007,4008,4009 and score 0 其中questionid有索引而 sco...

Oracle資料庫優化的經驗總結

個人理解,資料庫效能最關鍵的因素在於io,因為操作記憶體是快速的,但是讀寫磁碟是速度很慢的,優化資料庫最關鍵的問題在於減少磁碟的io,就個 人理解應該分為物理的和邏輯的優化,物理的是指oracle產品本身的一些優化,邏輯優化是指應用程式級別的優化物理優化的一些原則 1 oracle的執行環境 網路,...

C 連線主流資料庫經驗總結

在實際開發中,我們經常需要對資料庫進行訪問,針對不同型別的資料庫 如mysql sqlite access excel等 如果採用不同的方法進行連線,會把我們搞崩潰。如果能夠採用統一的方式對資料庫進行訪問,在開發過程中就會變得方便和簡單。sqlapi 語法很簡單,只要你會c 都能看懂,上手很快。下面...