List:German« Previous MessageNext Message »
From:Marcel Kurz Date:April 19 2004 9:00am
Subject:RE: Index auf datetime Feld?
View as plain text  
hi georg,
> 
> und wie sieht die Query aus? 
SELECT count(page) AS hits, sum(size) AS traffic, month(datetime) 
AS monat, year(datetime) AS jahr FROM affiliate_statistik_neu USE 
INDEX(datetime) WHERE datetime >'2003-01-01 00:00:00' AND 
datetime < '2003-12-31 23:59:59'  GROUP BY monat, jahr ORDER 
by datetime DESC;
wobei ich auch schon mit "BETWEEN" gearbeitet hab macht aber 
kein unterschied.
was mir noch aufgefallen ist wenn der Zeitraum nur 1 Monat ist dann 
nimmt er den INDEX laut EXPLAIN bei grösseren Zeiträumen nimmt 
er Ihn nicht

>Wie sieht das Create Table 
CREATE TABLE affiliate_statistik_neu (
  page varchar(200) NOT NULL default '',
  ip varchar(15) NOT NULL default '',
  aid varchar(12) NOT NULL default '',
  UID varchar(20) NOT NULL default '',
  size int(10) NOT NULL default '0',
  datetime datetime NOT NULL default '0000-00-00 00:00:00',
  KEY page (page),
  KEY aid (aid),
  KEY size (size),
  KEY datetime (datetime)
) TYPE=MyISAM;

>under der  Explain output aus? 
mysql> explain SELECT count(page) AS hits, sum(size) AS traffic, 
month(datetime) AS monat, year(datetime) AS jahr FROM 
affiliate_statistik_neu USE INDEX(datetime) WHERE datetime >
'2003-01-01 00:00:00' AND datetime < '2003-12-31 23:59:59'  
GROUP BY monat, jahr ORDER by datetime DESC;

EXPLAIN-AUSGABE:
table = affiliate_statistik_neu
type = ALL
possible_keys = datetime
key = NULL
key_len = NULL
ref = NULL
rows = 3141347
Extra = where used; Using temporary; Using filesort

wenn ich aber nur einen Monat auswähle dann nimmer er den
Index:
mysql> explain SELECT count(page) AS hits, sum(size) AS traffic,
 month(datetime) AS monat, year(datetime) AS jahr FROM 
affiliate_statistik_neu USE INDEX(datetime) WHERE datetime >
'2004-01-01 00:00:00' AND datetime < '2004-01-31 23:59:59'  
GROUP BY monat, jahr ORDER by datetime DESC;

EXPLAIN-AUSGABE:
table = affiliate_statistik_neu
type = range
possible_keys = datetime
key = datetime
key_len = 8
ref = NULL
rows = 450848
Extra = where used; Using temporary; Using filesort

WARUM ?

>Welche Version benutzt du?
MYSQL Version: 3.23.57


> 
> Wenn Du eine Antwort auf Dein Problem erwartest, solltest Du 
> dieses auch 
> für den ML-Leser verständlich beschreiben.
hoffe das war jetzt verständlicher...

beste grüße
marcel

Thread
Index auf datetime Feld?Marcel kurz16 Apr
  • Re: Index auf datetime Feld?Georg Richter16 Apr
    • RE: Index auf datetime Feld?Marcel Kurz19 Apr
      • Re: Index auf datetime Feld?Sebastian Mendel19 Apr
  • Re: Index auf datetime Feld?Sebastian Mendel19 Apr
    • RE: Index auf datetime Feld?Marcel Kurz19 Apr