Hallo,
Anton mein Name.
ich habe eine einfache Tabelle in MariaDB
Zu einer bestimmten Zeit werden Werte gemessen, und mit der Zeit abgelegt:
CREATE TABLE `tabelle1` (
`nummer` int(11) NOT NULL AUTO_INCREMENT,
`zeit` datetime NOT NULL,
`wert` int(11) NOT NULL,
PRIMARY KEY (`nummer`),
KEY `zeit` (`zeit`)
) ENGINE=InnoDB;
Ich möchte in einer Abfrage alle Werte eines Tages summiert darstellen:
SELECT
AVG(UNIX_TIMESTAMP(zeit)) AS "time",
SUM(wert) AS summe
FROM tabelle1
WHERE
zeit BETWEEN '2021-01-01' AND '2023-01-01'
GROUP BY DATE(zeit)
ORDER BY zeit
Leider wird der Index zeit nicht genutzt:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE tabelle1 ALL zeit NULL NULL NULL 12345 Using where; Using temporary; Using filesort
Wie muss ich meine Abfrage umstellen?
Oder kann ich (gelingt mir aber nicht den Index zu nutzen) mit einem Sub-Querry arbeiten?
EXPLAIN SELECT
AVG(UNIX_TIMESTAMP(t1.zeit)) AS "time",
SUM(t1.wert) AS summe
FROM
(SELECT
zeit, wert
FROM tabelle1
WHERE zeit BETWEEN '2021-01-01' AND '2023-01-01' ORDER BY zeit) AS t1
GROUP BY DATE(t1.zeit)
Ich fürchte wenn die Daten größer werden wird's langsam...
Weiß jemand Rat?
Anton mein Name.
ich habe eine einfache Tabelle in MariaDB
Zu einer bestimmten Zeit werden Werte gemessen, und mit der Zeit abgelegt:
CREATE TABLE `tabelle1` (
`nummer` int(11) NOT NULL AUTO_INCREMENT,
`zeit` datetime NOT NULL,
`wert` int(11) NOT NULL,
PRIMARY KEY (`nummer`),
KEY `zeit` (`zeit`)
) ENGINE=InnoDB;
Ich möchte in einer Abfrage alle Werte eines Tages summiert darstellen:
SELECT
AVG(UNIX_TIMESTAMP(zeit)) AS "time",
SUM(wert) AS summe
FROM tabelle1
WHERE
zeit BETWEEN '2021-01-01' AND '2023-01-01'
GROUP BY DATE(zeit)
ORDER BY zeit
Leider wird der Index zeit nicht genutzt:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE tabelle1 ALL zeit NULL NULL NULL 12345 Using where; Using temporary; Using filesort
Wie muss ich meine Abfrage umstellen?
Oder kann ich (gelingt mir aber nicht den Index zu nutzen) mit einem Sub-Querry arbeiten?
EXPLAIN SELECT
AVG(UNIX_TIMESTAMP(t1.zeit)) AS "time",
SUM(t1.wert) AS summe
FROM
(SELECT
zeit, wert
FROM tabelle1
WHERE zeit BETWEEN '2021-01-01' AND '2023-01-01' ORDER BY zeit) AS t1
GROUP BY DATE(t1.zeit)
Ich fürchte wenn die Daten größer werden wird's langsam...
Weiß jemand Rat?