簡體   English   中英

通過自動生成的主鍵提高數據庫性能(或)避免數據庫表的性能問題

[英]Improving database performance (or) avoiding performance issues of database table with auto-generated primary key

我們的應用程序有一個表,它將客戶端的所有事務記錄存儲在一個數據庫表中,該表具有自動生成的密鑰作為主鍵。 我們現在每天開始接收大約25,000條記錄,並開始懷疑在某些時候這是否會導致性能問題。

背景:
交易表包含每個交易的所有詳細信息我們的客戶(在現實世界中,他們是食品供應商(比如說Kellogs谷物)和經銷商(比如沃爾瑪))每天都在進行。 最初,設計沒有指定任何可用作事務主鍵的邏輯/功能字段,因此DB開發人員繼續添加自動生成的密鑰以“填充”主鍵。 由於客戶端需要在前端擁有所有信息,因此查詢始終是SELECT * FROM TRANSACTIONS 該表有近80列,現已增長到100K記錄。

數據庫:Oracle 11g
核心業務邏輯實現在:Java 1.5(用於查詢的JDBC驅動程序)
前端:SmartGWT

查詢:
假設一直抓取所有記錄將在某個時刻開始錘擊性能,我想尋求任何數據庫設計/查詢調整/一般建議,我應該考慮避免性能問題或提高模塊的性能。

Oracle 11允許您創建間隔分區。 我認為交易日期是分區鍵的一個很好的候選者。 我沒有看到任何理由向最終用戶顯示所有交易(至少每次都有)。 通常只顯示上周/月的數據......檢索完整的交易列表可以采用不同的方式處理(存儲合並余額,使用保存歷史數據的只讀表等)。
此外,在一個表中有80列對我來說非常可疑。

如果您還沒有這樣做,我建議在供應商ID上添加索引並將查詢更改為:

SELECT * FROM TRANSACTIONS WHERE VENDOR_ID = :Vendor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM