AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Indizes aufräumen

Ein Thema von Tim Henford · begonnen am 2. Apr 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#1

Indizes aufräumen

  Alt 2. Apr 2008, 12:52
Datenbank: MS SQL 2000 • Zugriff über: ADO
Hallo,

ich wollte in meiner DB den Index neu erstellen, da durch Löschen teilweise große Lücken in der Reihenfolge der lfd. Nr. entstanden sind, probiert hab ich folgendes, aber zu funktionieren scheint es nicht:

 adoquery1.SQL.Text:= 'DBCC dbreindex (''meineTabelle'')'; q2.ExecSQL;
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Indizes aufräumen

  Alt 2. Apr 2008, 13:22
Das kann aber sehr gefährlich werden.

Meistens wird der Index dazu verwendet, Verweise zu bilden.
So wird z.B. in einer Tabelle AUFTRAG per Index auf die Tabelle ADRESSEN zugegriffen.
Im Auftrag mit Index 123 ist ein Verweis auf die Adresse 254 (Fa. Meier, Kaiserstr. 23, 12345 Hamburg).
Nun wird in der Tabelle ADRESSEN der Index neu erstellt und Index 254 steht für eine andere Adresse oder zeigt ins Nirvana.
Somit müsste die DB allen Verweisen folgen und alle anderen Tabellen entsprechend anpassen.

Ob das Dein DB-System unterstützt?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#3

Re: Indizes aufräumen

  Alt 2. Apr 2008, 13:38
ja dessen bin ich mir schon bewusst.
Aber ich brauch es nur für diese Tabelle, in der keine weitere Abhängigkeiten bestehen, das wäre also kein Problem...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Indizes aufräumen

  Alt 2. Apr 2008, 13:43
Warum spielen für dich die Werte der Indizes eine Rolle? Der Index dient allein intern der Datenbank, um einen Datensatz eindeutig zu identifizieren. Für den Entwickler und später den Anwender spielt es absolut keine Rolle, welche Werte die Indizes haben. Und Argumente, wie "will ich nicht", "ist unschön" sollte bei einem professionellen Entwickler keine Rolle spielen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#5

Re: Indizes aufräumen

  Alt 2. Apr 2008, 14:57
es geht nur darum, die DB zu "säubern", d.h. es sollen keine unnötigen Lücken entstehen, was mach ich wenn ich 2147483647 Einträge habe?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Indizes aufräumen

  Alt 2. Apr 2008, 15:01
Wann wird deine Tabelle 2 Millarden Einträge erreichen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Indizes aufräumen

  Alt 2. Apr 2008, 15:16
Warum verwendest Du nicht
DBCC INDEXDEFRAG ({ database_name | database_id | 0 }, { table_name | table_id | 'view_name' | view_id } , { index_name | index_id }) ??
  Mit Zitat antworten Zitat
Tim Henford

Registriert seit: 14. Sep 2006
169 Beiträge
 
#8

Re: Indizes aufräumen

  Alt 3. Apr 2008, 11:21
Also einmal hab ich das Problem, dass mein Index "PK__meineTabelle__1FCDBCEB" heisst und der sicher immer variiert - also ich nicht weiß, wie ich an den Namen komme, außer mit Enterprise Manager.
Und
adoquery.SQL.Text:= 'DBCC INDEXDEFRAG(0,''meineTabelle'',''PK__meineTabelle__1FCDBCEB'')'; q2.ExecSQL; hat nichts bewirkt, was die Spalte ID angeht, die hab ich übrigens folgendermaßen angelegt:

CREATE TABLE meineTabelle (OpID bigint NOT NULL IDENTITY PRIMARY KEY, ...) kann man dann nicht den Namen der ID mit angeben, damit nicht sowas wie oben entsteht?

Des Weiteren wird hier auch von "the only way to truly reduce logical fragmentation is to rebuild your table's indexes" gesprochen, nur nicht wie:
http://www.sql-server-performance.co...defrag_p1.aspx
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz