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


Hjälp med optimering

Postades av 2007-12-11 16:55:37 - Kristian Kurki, i forum sql-server/msde, Tråden har 6 Kommentarer och lästs av 976 personer

Hej,
sitter på ett projekt där jag tror vi kan vinna mycket tid genom att optimera databasen. Jag kan grunderna i SQL men när det gäller optimering så är jag lite osäker. Det är server enterprise 7.0 som används.

Om jag sparar ett tal (tex 1,4) så sparas det i en varchar med storleken 50 tex. Innebär det att för varje tal som sparas så konverteras talet om till en sträng och sparas ner på en plats för 50 tecken?
Då innebär det ju att man skulle spara rätt mycket arbete och tid bara genom att spara tal som tal?

Är det i ett liknande fall där en max 5 tecken lång sträng sparas i ett 50 tecken långt fält viktigt att sätta maxlängden till fältet kortare?

Samma med precision, om jag har precision 4 sparas alltid 4 decimaler och gör det stor prestanda skillnad att minska till det man maximalt behöver?

Det finns två tabeller där det alltid görs ett urval på både datum kolumnen och en annan kolumn (sträng). Detta är väl ett skol exempel på när man ska indexera men ska det vara ett unikt index eller ett clustered och hur utyttjar jag indexet i mina querys?

Jag antar att man kan spara mycket tid på att använda stored procedures på dessa tabeller med?


Svara

Sv: Hjälp med optimering

Postades av 2007-12-11 17:28:39 - Thomas Vanhaniemi

Ska du spara enbart tal ska du spara det i en variabel för tal. Tal är mycket snabbare att söka på och det tar mycket mindre plats. En varchar är av varierande längd och enbart så många tecken som behövs, upp till det maximala antalet, reserveras. Så sparar du fyra tecken långa strängar i varchar(50) tas bara fyra tecken upp, i teorin. I praktiken måste det finnas något sluttecken eller annan metadata som beskriver hur lång din sträng är.

Indexera på alla Foreign Keys och fält du söker mycket på, det är min rekommendation.


Svara

Sv:Hjälp med optimering

Postades av 2007-12-12 08:40:36 - Kristian Kurki

När det gäller talen som sparas i ett varchar fält så söks det aldrig på dem (och kommer inte att göras i framtiden heller) så då kanske det inte ger så mycket (annat än personlig tillfredställelse att det är korrekt) att ändra dem.

Är det någon som har något bra och hyggligt lättläst länk som förklarar indexering och Stored procerures? De sajter jag varit inne på är antingen för grundläggande eller för abstrakta.


Svara

Sv: Hjälp med optimering

Postades av 2007-12-12 10:55:31 - Ola Lindfeldt

Troligen ligger prestandaproblemen i att det saknas Index. 9 gånger av 10 är det så.. Minst :)
Visst är det lämpligt att lagra tal som tal, men om du i detta fall i huvudsak läser från databasen och talet bara är en kolumn som visas upp, så kommer du inte märka av någon direkt prestandavinst genom att ändra på datatypen. Du bör göra det ändå, tycker jag, men av andra skäl.. :)
Sätt helt enkelt vanliga index på de fält som används i sökningar (where, join..)
Du behöver inte skriva något i din SQL för att indexen skall utnyttjas.
Detta sköter databasen automatiskt.
Clustered Index betyder att posterna kommer lagras fysiskt i denna ordning. Det kan bara finnas ett sådant index i en tabell, vanligen och default när du skapar en identity column (primärnyckel) är denna integer 4 bytes och clustered. Stored Procedures är bra men har du stora prestandaproblem löses inte dessa med att du konverterar inline/AD-Hoc-SQL till SP:s. SP:s är framför allt bra för att du kan separera SQL från t.ex. VB-kod, och du får ett mer strukturerat system som är enklare att underhålla.
SP:s har prestandafördelar (t.ex.databasen slipper kompilera SQL-strängarna som kommer in) men den faktorn blir sällan en flaskhals..


Svara

Sv: Hjälp med optimering

Postades av 2007-12-12 11:00:53 - Thomas Vanhaniemi

Det är alltid god databasdesign att använda sig av rätt datatyp på fältet. Dessutom blir det mer data att lagra om du vill lagra tal i siffror. Med 4 byte i en int kan du lagra ca 10 siffror. Ska du lagra 10 siffror i en varchar använder du dig av 10 byte + metadata.

Om du dessutom ska utföra någon typ av matematisk beräkning eller liknande på fältet blir detta inte möjligt om du lagrat i fel format, om du inte konverterar om fältets typ i SQL satsen på något sätt (vilket i så fall är väldigt prestandakrävande).
Vid sortering på tal sparat i en varchar får du också fel resultat. 1, 2, 10, 20 blir till exempel 1, 10, 2, 20.

Har inget uppslag på bra information om index och stored precedures, så det får någon annan tipsa om.


Svara

Sv:Hjälp med optimering

Postades av 2007-12-12 11:13:08 - Kristian Kurki

Men om jag har följande tabell

Datum Sträng andra värden som endast läses
39100 A
39099 B
39099 A
39098 B
39098 C
39098 A


Datumet sparas som tal, sökningarna görs alltid på både datum och strängen, DVS datum > date och datum < date och sträng = s.
Då bör jag indexera datum och strängen som clustered?


Svara

Sv: Hjälp med optimering

Postades av 2007-12-12 14:32:17 - Ola Lindfeldt

Om detta är en ReadOnly-tabell och man alltid söker på dessa två fält, då skulle det kunna fungera ja. Isf gör du ett sammansatt index på dessa två fält och gör det clustered. Men kom ihåg att det då måste vara unika värden. Om du börjar inserta värden mitt i kommer det bli mycket segt. Men detta kan vara bra om tabellen är ordentligt stor, det är bara readonly och man söker alltid på indexet (du sparar utrymme).




Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 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

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 617
27 953
271 709
5 739
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