INFORMIX-SE 7.32:是否有更好/更快的方法在列中查找具有最大值的行?
我有一個大約5000個零點的交易表。 transaction.ticket_number [INT]是每次更新特定行時使用下一個可用連續故障單編號更新的列。該列是唯一索引的。我目前使用下面的SELECT語句查找最大(transaction.ticket_num):
SELECT MAX(transaction.ticket_number) FROM transaction;
由於正在更新的行聚集acording到transaction.fk_id [INT],它連接到客戶。 pk_id [SERIAL],行不在物理上位於事務表的末尾,而是位於屬於每個特定客戶的事務行組中。我選擇聚集屬於每個客戶的交易,因爲當我滾動瀏覽每個客戶交易時,響應時間更快。用上面的查詢有沒有更快的方法來查找max(transaction.ticket_number)?..「事務(ticket_number)下降的唯一索引」會改進訪問還是索引從開始到結束都被不相關地完全遍歷?
是的,單用戶,rowsize = 512,不支持SE中的FIRST。可以ISQL(即執行&ACE)使用IDS而不是SE?..我的應用程序是單用戶,儘管使用大於500K的歷史DSS事務表位於單獨的數據庫中,但您永遠不知道客戶端何時可能需要分佈式多用戶數據庫他們所有的當鋪分支。 – 2010-06-21 18:54:38
@Frank:是的,ISQL可以很好地與IDS協同工作,但必須注意的是,Perform不能與分段表一起使用,除非它們是使用WITH ROWIDS子句創建的。但是,對於直接遷移,你不會有碎片表,然後你會沒事的。 – 2010-06-21 19:49:22
這真是太棒了!我正在計劃'由於表達式造成的碎片customer.date_last_activity <今天 - 365在dbsp_inactive_customers'中,所以我想在我的reorg proc的'CREATE TABLE customer'語句中包含'WITH ROWIDS'。 – 2010-06-23 15:30:21