Avatar billede ljungberg Nybegynder
19. juli 2004 - 12:05 Der er 12 kommentarer og
1 løsning

full table scan

Jeg har haft et site kørende i et stykke tid uden problmer, men lige pludselig kommer der en fejlmeddelelse: warning mysql_query() Your query requires a full table scan. den viser dog stadig den data der hentes i databasen. Så enten skal jeg have slået den warning fra, eller finde ud af hvad en full query scan er? hvis der er nogen der ved hvorfor problemet opstår vil jeg også meget gerne høre det.
Avatar billede ljungberg Nybegynder
19. juli 2004 - 12:06 #1
I kan evt. se fejlen på www.milestones.nu. den kommer på alle undersider, da det er en standardside, der bare hiver data ind fra databasen
Avatar billede Slettet bruger
19. juli 2004 - 12:13 #2
"full tabelscan" betyder at der ikke er et pssende index som kan bruges til at afgrænse dine data - men at alle data i tabellen skal læses.
Avatar billede ljungberg Nybegynder
19. juli 2004 - 12:23 #3
ok, hvad skal jeg så tilføje for at komme udenom fejlen?
Avatar billede dsj Nybegynder
19. juli 2004 - 12:26 #4
Du skal tilføje et index, som dækker de kolonner du filtrerer på i dit SQL-statement.
Avatar billede ljungberg Nybegynder
19. juli 2004 - 12:29 #5
Her er min meget simple sql: $strSQL="SELECT xpos, ypos, div_name, display FROM text  WHERE page_id='$page_id'"; hvad skal der helt præcist gøres ved den? jeg har ikke lige arbejdet med indexering før
Avatar billede Slettet bruger
19. juli 2004 - 12:31 #6
Opret et index med feltet page_id
Avatar billede fsconsult.dk Nybegynder
19. juli 2004 - 12:34 #7
For det første bør du nok slå den php-option til der ignorerer warnings fra mysql, da det er rimelig forvirrende for brugerne.

For det andet bør du muligvis lave et index på page_id i text tabellen.
  ALTER TABLE `text` ADD INDEX `page_id_ix` ( `page_id` );
Avatar billede fsconsult.dk Nybegynder
19. juli 2004 - 12:34 #8
skulle ha' været et svar
Avatar billede dsj Nybegynder
19. juli 2004 - 12:37 #9
Hvad er primærnøglen i tabellen 'text'?
Avatar billede ljungberg Nybegynder
19. juli 2004 - 13:11 #10
primærnøglen er text_id. Er det så text_id og ikke page_id jeg skal oprette indexet på? for at slå warnings i mysql fra, skal jeg have fat i dem der hoster min side, så der kan blive ændret i php.ini ikke?
Avatar billede fsconsult.dk Nybegynder
19. juli 2004 - 13:21 #11
For at løse problemet med den viste query, så er det page_id du skal have index på.

Det er dog altid en god ide også at have et index på den primære nøgle (er iøvrigt et krav hvis man vil bruge autogenerede nøgler).

Alle søgninger hvor du ønsker at optimere søgetiden på, kan du tilføje index på de relevante tabeller udfra flg.:
* alle felter hvor der søges på præcis match (med = og ingen wildcards!) skal felterne placeres først i indexet.
* hvis du har order by på andre felter, kan du evt tilføje dem i indexet i samme rækkefølge som i order by.

Det er dog altid en afvejning med index, da jo flere index du tilføjer til en database, jo hurtigere kan den søge ting frem, men jo længere tid tager det at tilføje/opdatere records.
Avatar billede ljungberg Nybegynder
19. juli 2004 - 13:30 #12
Nu har jeg oprettet indexet på page_id og får nu fejlen: PHP has encountered an Access Violation at 02030AFD. Kan det være mit webhotel der har lavet om i konfiguraionen?
Avatar billede ljungberg Nybegynder
19. juli 2004 - 16:51 #13
Jeg har lige snakket med Azero og det er hos dem der er sket en fejl med deres MySQL server. Men tak for inputs, og jeg fik da lige lært lidt om index ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester