Kom ihåg mig?
Home Menu

Menu


Optimera SELECT på datum

Ämnesverktyg Visningsalternativ
Oläst 2009-02-19, 23:36 #1
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
radioaktivitet radioaktivitet är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 336
Jag gör en del SELECT-frågor där resultatet skall innehålla rader där en viss kolumn är lika med ett visst datum.

Exempel:
SELECT * FROM T WHERE MYDATE = CURRENT_DATE

MYDATE är ett datum-fält (innehåller ej tid) och har ett "normalt" index. Tabellen är av typen myisam.

Jag upplever att denna fråga, trots att den matchar på ett värde exakt och trots att datum-kolumnen har ett index, tar väldigt lång tid att exekvera.

Min tabell har miljontals rader. Men det är endast 15000 - 20000 rader som matchar ett visst datum.

Problemet är som sagt att den här frågan kan ta ganska lång tid att exekvera. Går det att få den att exekvera snabbare på något sätt?

Jag har läst i manualen om BTREE men vet inte riktigt om den typ av index går att tillämpa på datum. Då och då sorterar jag på datum i andra frågor och enligt manualen fungerar inte det om man har ett BTREE index. Men det kanske går att ha både ett normalt och ett BTREE index samtidigt, utan problem?
radioaktivitet är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-20, 08:05 #2
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Ett BTREE index är nog vad du har om du inte vet vad du har för index. Undantaget jag vet om med MySQL är om du använder innodb och har klustrade index.

Det låter som om du kan ha nytta av att öka på key buffer size, förutsatt att du använder myisam.

Annars kan det också vara så att själva datahämtningen tar väldig tid om du har en väldigt fragmenterad tabell. Testa att köra en optimize på tabellen.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-02-22, 13:25 #3
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Har inte gjort några tester själv men det ska tydligen vara bra mycket snabbare att använda int istället för datum, iaf i SQL Server. Det kanske kan vara värt att undersöka om detsamma gäller i MySQL.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:37.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017