當前位置:首頁 » 數據倉庫 » 資料庫s排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

資料庫s排序

發布時間: 2022-09-18 11:40:52

資料庫中排序的對比及使用條件詳解

假定Mysql伺服器和PHP伺服器都已經按照最適合的方式來配置,那麼系統的可伸縮性(Scalability)和用戶感知性能(User-perceived
Performance)是我們追求的主要目標。在實際運行中,MYSQL
中數據往往以
HASH
tables、BTREE
等方式存貯於內存,操作速度很快;同時INDEX
已經進行了一些預排序;很多應用中,MySQL
排序是首選。
PHP與MySQL相比具有如下優勢:
1、考慮整個網站的可伸縮性和整體性能,在應用層(PHP)中排序明顯會降低資料庫的負載,從而提升整個網站的擴展能力。而資料庫的排序,實際上成本是非常高的,消耗內存、CPU,如果並發的排序很多,DB
很容易到瓶頸。
2、如果在應用層(PHP)和MYSQL之間還存在數據中間層,合理利用,PHP會有更好的收益。
3、PHP在內存中的數據結構專門針對具體應用來設計,比資料庫更為簡潔、高效;
4、PHP不用考慮數據災難恢復問題,可以減少這部分的操作損耗;
5、PHP不存在表的鎖定問題;
6、MySQL中排序,請求和結果返回還需要通過網路連接來進行,而PHP中排序之後就可以直接返回了,減少了網路IO。
至於執行速度,差異應該不會很大,除非應用設計有問題,造成大量不必要的網路IO。另外,應用層要注意PHP

Cache
設置,如果超出會報告內部錯誤;此時要根據應用做好評估,或者調整Cache。具體選擇,將取決於具體的應用。
列出一些PHP中執行排序更優的情況:
1、數據源不在MySQL
中,存在硬碟、內存或者來自網路的請求等;
2、數據存在
MySQL
中,量不大,而且沒有相應的索引,此時把數據取出來用PHP排序更快;
3、數據源來自於多個MySQL
伺服器,此時從多個
MySQL
中取出數據,然後在PHP中排序更快;
4、除了MySQL
之外,存在其他數據源,比如硬碟、內存或者來自網路的請求等,此時不適合把這些數據存入MySQL
後再排序;
列出一些必須在MySQL中排序的實例:
1、MySQL中已經存在這個排序的索引;
2、MySQL中數據量較大,而結果集需要其中很小的一個子集;比如
1000000
行數據,取TOP
10;
3、對於一次排序、多次調用的情況,比如統計聚合的情形,可以提供給不同的服務使用,那麼在MySQL
中排序是首選的。另外,對於數據深度挖掘,通常做法是在應用層做完排序等復雜操作,把結果存入MySQL即可,便於多次使用。
4、不論數據源來自哪裡,當數據量大到一定的規模後,由於佔用內存/Cache
的關系,不再適合PHP中排序了;此時把數據復制、導入或者存在MySQL
,並用INDEX
優化,是優於PHP
的。不過,用
Java,甚至
C++
來處理這類操作會更好。
有些類似大數據集聚合或者匯總的數據,在客戶端排序得不償失。當然,也有用類似搜索引擎的思路來解決類似應用的情況。
從網站整體考慮,就必須加入人力和成本的考慮。假如網站規模和負載較小,而人力有限(人數和能力都可能有限),此時在應用層(PHP)做排序要做不少開發和調試工作,耗費時間,得不償失;不如在DB
中處理,簡單快速。對於大規模的網站,電力、伺服器的費用很高,在系統架構上精打細算,可以節約大量的費用,是公司持續發展之必要;此時如果能在應用層(PHP)
進行排序並滿足業務需求,盡量在應用層進行。
關於PHP中執行排序與MySQL中執行排序的相關知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!

❷ 資料庫排序

排序的命令是sort,格式是:
SORT TO 新表名 ON 欄位名

補充:
例如下面的命令:
use 學生
sort on 學號 to 學生_排序
產生一個新的 學生_排序.DBF 文件,裡面是排序了的。

如果你只是向按照某個標准進行排序查看一下,不生成新的文件,那麼可以使用SQL語句,例如:
SELECT * FROM 學生 ORDER BY 總成績 DESC

❸ s、l這類尺碼范圍資料庫如何排序

是按照表的大小排序嗎》如果是的話可以從安可下面的語句獲得表大小之後排序:

begin try
SELECT
(row_number() over(order by a3.name, a2.name))%2 as l1,
a3.name AS [schemaname],
a2.name AS [tablename],
a1.rows as row_count,
(a1.reserved + ISNULL(a4.reserved,0))* 8 AS reserved,
a1.data * 8 AS data,
(CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN
(a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8 AS index_size,
(CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN
(a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * 8 AS unused
FROM
(SELECT
ps.object_id,
SUM (
CASE
WHEN (ps.index_id < 2) THEN row_count
ELSE 0
END
) AS [rows],
SUM (ps.reserved_page_count) AS reserved,
SUM (
CASE
WHEN (ps.index_id < 2) THEN
(ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)
ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)
END
) AS data,
SUM (ps.used_page_count) AS used
FROM sys.dm_db_partition_stats ps
GROUP BY ps.object_id) AS a1
LEFT OUTER JOIN
(SELECT
it.parent_id,
SUM(ps.reserved_page_count) AS reserved,
SUM(ps.used_page_count) AS used
FROM sys.dm_db_partition_stats ps
INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)
WHERE it.internal_type IN (202,204)
GROUP BY it.parent_id) AS a4 ON (a4.parent_id = a1.object_id)
INNER JOIN sys.all_objects a2 ON ( a1.object_id = a2.object_id )
INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)
WHERE a2.type <> 'S' and a2.type <> 'IT'
ORDER BY a3.name, a2.name
end try
begin catch
select
-100 as l1
, 1 as schemaname
, ERROR_NUMBER() as tablename
, ERROR_SEVERITY() as row_count
, ERROR_STATE() as reserved
, ERROR_MESSAGE() as data
, 1 as index_size
, 1 as unused
end catch

❹ 資料庫排序問題

和ASCII碼沒多大關系,數字就按大小排序,日期按順序,字元的話也不是按ASCII碼排的是按字元的順序不過也基本遵守ASCII碼。這個其實很簡單你用mysql做個測試就可以了,把鍵盤上的字元都打一遍,欄位屬性設置為varchar2就OK了。
mysql針對這些基本沒有什麼太過於復雜的分析,如果你要用到很細的話oracle可以。
在oracle9i中新增了按照拼音、部首、筆畫排序功能。設置NLS_SORT值
SCHINESE_RADICAL_M
按照部首(第一順序)、筆劃(第二順序)排序
SCHINESE_STROKE_M 按照筆劃(第一順序)、部首(第二順序)排序
SCHINESE_PINYIN_M 按照拼音排序,系統的默認排序方式為拼音排序
舉例如下:
表名為 dept
,其中name欄位是中文,下面分別實現按照單位名稱的筆劃、部首和拼音排序。
1: //按照筆劃排序
2: select * from dept
order by nlssort(name,'NLS_SORT=SCHINESE_STROKE_M');
3: //按照部首排序
4:
select * from dept order by nlssort(name,'NLS_SORT=SCHINESE_RADICAL_M');
5:
//按照拼音排序,此為系統的默認排序方式
6: select * from dept order by
nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M');

❺ 關於mysql資料庫排序的問題

在執行查詢結果時,默認情況下查詢結果無序排列。但我們有時需要對數據按一定規則進行排序。這時可以通過order
by子句來實現這個功能。語法如下:

select
<*,column
[alias],...>
from
table

[where
condition(s)]

[order
by
column[asc|desc]];
默認是asc指定的升序排列,desc用來指定降序排列。
1、升序排序:

使用order
by子句時,默認情況下數據是按升序排列的,故可以用asc關鍵字指點升序排列,或者不指定,默認就是升序,顯示效果是一樣的,如下圖:

2、降序排序:

當需要查詢結果降序排列時,必須在排序後指定desc關鍵字。如下圖是查看職員薪水的降序排列:

❻ sql資料庫自動排序

那就不要在資料庫處理的時候排序

你取出來的數據放到數組里

自己寫個方法來排序

❼ 資料庫中升序降序的關鍵字分別是什麼

SQL ORDER BY 關鍵字

  • ORDER BY 關鍵字用於對結果集按照一個列或者多個列進行排序。

  • ORDER BY 關鍵字默認按照升序對記錄進行排序。如果需要按照降序對記錄進行排序,您可以使用 DESC 關鍵字。

SQL ORDER BY 語法

❽ 資料庫排序語句

資料庫的排序用order by語句實現。

工具:sqlserver 2008R2

步驟:

1、有如下學生表: