---
title: "Prestandajakt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/97065-prestandajakt"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "joakimweb"
published: "2004-02-10T19:49:30.000Z"
updated: "2004-02-12T10:55:08.000Z"
replies: 8
views: 338
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/97065-prestandajakt"
---

# Prestandajakt

## #1 — joakimweb, 2004-02-10T19:49Z



Permalänk: https://www.webforum.nu/p/97065

## #2 — Pace, 2004-02-10T19:53Z

Det räcker med en sql-sats:

```
SELECT SUM(antal) FROM dag WHERE tillid=X ORDER BY id DESC limit 7
```

Funktionen sum() adderar värden, kort och gott.

Permalänk: https://www.webforum.nu/p/1272368

## #3 — joakimweb, 2004-02-11T08:46Z

Mjo, men exakt så har jag ju :-(

```
IntTotal = Connect.Execute("SELECT Sum(antal) FROM dag WHERE tillid='"&iID&"' ORDER BY id DESC limit 7").Fields(0)
```

fast att jag då skippar RecSetet. Finns det inget annat sätt att skriva med sum just när man ska ha limit med?

Permalänk: https://www.webforum.nu/p/1272950

## #4 — Jojoxx, 2004-02-11T15:27Z

Tråden flyttas (kanske borde flyttas till [SQL](http://www.webforum.nu/forumdisplay.php?s=&forumid=53)).

Permalänk: https://www.webforum.nu/p/1273204

## #5 — LarsG, 2004-02-11T15:49Z

Det man vill göra är

```
SELECT Sum(antal) FROM (
select antal 
from dag 
WHERE tillid= <iID> 
ORDER BY id DESC 
limit 7) dt

-- eller

select sum(antal) from dag
where tillid = <iID>
and id in (
    select id 
      from dag 
     order by id desc 
     limit 7)
```

Eftersom det ser ut som Mysql så går inte det och då får man göra det i flera steg. Skapa en temptabell som innehåller värdena från

```
select antal
      from dag 
     order by id desc 
     limit 7
```

och gör sedan summeringen på värdena i temptabellen.

Permalänk: https://www.webforum.nu/p/1273215

## #6 — joakimweb, 2004-02-11T17:52Z

Okej, bra att veta =)
MySQL-databas används.

Om man har som nu att 7 senaste loopas igenom och då antal = antal + RecSet("antal"), tjänar man nåt på att skapa en temporär tabell med innehållet, räkna ut och sedan radera?

Jag har inte arbetat så mycket med såpass avancerad SQL, har du något exempel på hur en temp-tabell skall göras? (tabelltyp + transfer av 7 senaste till egen tabell)

Tack på förhand!

Permalänk: https://www.webforum.nu/p/1276264

## #7 — LarsG, 2004-02-11T17:58Z

Om det bara gäller 7 värden så kan du lika gärna hämta värdena till applikationen och summera där så just i detta fall har man inte någon direkt nytta av en temptabell. 

Man kan skapa en temptabell med

```
create temporary table x select ....
```

<http://www.mysql.com/doc/en/CREATE_TABLE.html>

Permalänk: https://www.webforum.nu/p/1276266

## #8 — joakimweb, 2004-02-11T18:09Z

hmm...
så create temporary table x select \* from dag order by id desc limit 7 skall fungera i så fall?
Hämtar jag bara data som vanligt från x sedan?
Raderas tabellen automatiskt?

Permalänk: https://www.webforum.nu/p/1276275

## #9 — joakimweb, 2004-02-12T10:55Z

Det fungerade!

Vid själva registreringen av besökare kollas om ett ip-nummer finns med bland drygt 500 000 andra. Om man skapar en temp-tabell för kanske de som är till just den användaren (statistikid), skulle det innebära förbättrat prestanda?

Det som fungerar nu:

```
Connect.Execute("CREATE TEMPORARY TABLE temp SELECT * FROM dag WHERE tillid='"&iID&"' ORDER BY id DESC limit 7")
maxantal = Connect.Execute("SELECT Sum(antal) FROM temp WHERE tillid='"&iID&"'").Fields(0)
Connect.Execute("DROP TABLE temp")
```

 

Det står att tabellen automatiskt raderas vid connect.Close, men tydligen måste den raderas så (?)

Permalänk: https://www.webforum.nu/p/1276596

---

Tråden på webben: https://www.webforum.nu/amne/asp/97065-prestandajakt
