我遇到了有關ARIA數據庫表的條目的問題。所述表的結構應是這樣的:Aria:DECIMAL條目的長度不正確
SHOW CREATE TABLE grid;
CREATE TABLE `grid`
(`meas_time` decimal(11,1) unsigned NOT NULL,
`meas_id` tinyint(2) unsigned NOT NULL,
`frequency` float(6,4) unsigned NOT NULL,
`voltage` float(7,4) unsigned NOT NULL,
`phase` float(9,8) unsigned NOT NULL,
PRIMARY KEY (`meas_time`,`meas_id`))
ENGINE=Aria
DEFAULT CHARSET=latin1
PAGE_CHECKSUM=1
插入到該表中的數據有總是應該正好滿足上述結構相同的格式。不過,這似乎只是爲「MEAS_ID」,「頻率」,「電壓」和「階段的工作 - 而不是「meas_time」:
SELECT FROM grid PROCEDURE ANALYSE();
第一(左)回答表的一半:
Field_name Min_value Max_value Min_length Max_length
archiv.grid.meas_time 1473152369.8 1475751654.0 22 22
archiv.grid.meas_id 1 1 1 1
archiv.grid.frequency 49.5832 59.9998 7 7
archiv.grid.voltage 101.3357 812.5874 8 8
archiv.grid.phase 0.00043659 6.99986124 10 10
二(右)回答表的一半:
Empties_or_zeros Nulls Avg_value_or_avg_length Std Optimal_fieldtype
0 0 1474509648.88213 845302.17909 DECIMAL(21, 1) NOT NULL
0 0 1.0000 0.0000 ENUM('1') NOT NULL
0 0 50.0250 0.3668 FLOAT(6,4) NOT NULL
0 0 289.5351 40.3620 FLOAT(7,4) NOT NULL
0 0 3.15090137 1.80843320 FLOAT(9,8) NOT NULL
所有數據被插入以同樣的方式 - 由python腳本利用的MySQLdb的包。它特別插入到數據庫中,如合適的長度,刺:
command = "INSERT INTO grid VALUES ('" + str(timestamp)[:12] + \
"', '" + str(frequency)[:7] + "', '" + str(voltage)[:8] + \
"', '" + str(phase)[:10] + "');"
self.localCursor.execute(command)
self.localDB.commit()
我跑的數據庫管理系統是這樣的:
Server Version: 5.5.52-MariaDB-1ubuntu0.14.04.1 - (Ubuntu)
顯然,這種差異是一個問題,因爲它會不必要膨脹了我的數據庫的大小。有誰知道,爲什麼會發生這種情況,我怎麼能阻止它?
好吧..但'行長'和'行大小'的值是準確的還是他們有同樣的問題?關於複合主鍵:當第一個鍵被首先使用時,鍵的順序會影響查詢的速度?在那種情況下,我應該改變這些。謝謝。 – Fantilein1990