Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-11 20:56:08 - Mattias Svensson, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 945 personer

När jag lägger till en ny användare kör jag en SELECT på hela tabellen, sorterar på användarnummer DESC och tar den första postens värde +1. Nu har jag hört om SQL uttrycket MAX, är det ett prestandamässigt bättre sätt att göra det?


Svara

Sv: SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-11 22:58:43 - Per Persson

Autoincrement är det rätta sättet. Att försöka fixa det på andra sätt kan vid hög belastning på servern (många trådar) leda till att det blir fel: tråd 1 hittar max = M, tråd 2 hittar max = M, tråd 2 skapar en ny post med id = M + 1, tråd 1 skapar en ny post med id = M + 1. Båda trådarna har därmed skapat varsin post med samma id. Det var inte så lyckat...


Svara

Sv:SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-14 13:35:21 - Mattias Svensson

Det där hängde jag inte med på... så du menar att vid hög belastning så kör servern flera frågor parallellt och blandar ihop dem enligt eget tycke?!


Svara

Sv: SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-14 13:39:47 - Thomas Vanhaniemi

Ja, flera trådar kan hantera samma webbsida samtidigt och arbeta mot samma databas samtidigt. Därför är det inte heller helt säkert att lägga in en ny rad i databasen och bara ta en "SELECT MAX(id) FROM tabell" och sedan använda sig av detta id annanstans eftersom man då inte kan vara säker på att ingen annan lagt in ett nytt id just före du gör MAX förfrågan.


Svara

Sv:SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-14 13:42:40 - Mattias Svensson

Nu är jag helt snurrig - om användare A kör en SQL som söker ut något, och användare B också kör en fråga, så säger du att servern kan blanda ihop deras svar och ge svar A till användare B???

Hmm.. nu tror jag att jag fattar... om detta summerar (från swesecure.com)

Detta sätt ser ut att vara teknik som identitetskolumen fungerar, men det skiljer sig på en viktig punkt. Identitetskolumn skapar aldrig samma värde två gånger, det kan däremot max()+1-tekniken göra. Ponera att vi raderar den senast inlagda raden ur tabellen. Då kommer max()+1 tekniken att ge samma värde igen till nästkommande rad medan identitetskolumnen kommer att dela ut ett nytt värde. Om vi exempelvis har raderna 1,2,3 och raderar nummer 3 så kommer det med max()+1 ge värderna 1,2,3 (igen) medan identitetskolumnen kommer att ge värderna 1,2,4.


Svara

Sv: SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-14 13:59:31 - Per Persson

Inte blanda ihop, utan att den ena processen/användaren inte hinner skapa en ny post innan den andre hämtar ut MAX. De får därför ut samma MAX och använder detta för att skapa nästa id.


Svara

Sv:SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-14 14:19:52 - Mattias Svensson

Men det innebär alltså att om jag har ett löpnummer, en serie som är unik för varje användare men inte unik i databasen, så är det inga problem att använda denna teknik med MAX()+1, problemet uppstår när två anrop görs mot samma nummerserie, eller?


Svara

Sv: SQL: MAX() eller kontrollera med kod?

Postades av 2007-05-14 15:03:05 - Johan Djupmarker

Ja, såvida inte samma användarkonto är inloggat flera gånger samtidigt.

/Johan


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
1 622
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies