Schrift
[thread]3673[/thread]

2 Fragen: 1: Wie erhöhe ich einen Wert um 1: 2: Wie kann ich eine ganze DB sichern? (Seite 4)



<< |< 1 2 3 4 >| >> 38 Einträge, 4 Seiten
pq
 2006-04-09 21:37
#34227 #34227
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=Relais,08.04.2006, 12:30]Ein gemeinsamer Index über Suchfeld und Sortierfeld wäre vielleicht am sinnvollsten... bin mir dabei nicht ganz sicher, aber manche Datenbanken (MySQL...) optimieren maximal mit einem einzigen Index, daher könnte ein kokmbinierter Index es da vielleicht retten.[/quote]
welche datenbank benutzt denn zwei indizes bei einem select?
wenn du auf die spalten a und b jeweils einen index hast, kannst du
doch nur einen von beiden benutzen...
wenn eine datenbank zwei indizes benutzen will, müssen sie doch
kombiniert sein, sonst geht das doch nicht, oder?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Relais
 2006-04-09 22:22
#34228 #34228
User since
2003-08-06
2261 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pq,09.04.2006, 19:37]welche datenbank benutzt denn zwei indizes bei einem select?
wenn du auf die spalten a und b jeweils einen index hast, kannst du
doch nur einen von beiden benutzen...[/quote]
So ist es definitiv bei MySQL.

Ob alle anderen SQL-Datenbanken mehrere Indizes verwenden können, weiß ich nicht genau. Sybase und Co (also Microsoft) können das. Ich meine jedoch, auch Oracle und DB2 könnten das, bei Oracle würde ich mich schon wundern, wenn nicht.

Achtung: Nur weil die "tollen" und teuren RDBMS mehrere Indizes verwenden können, heißt das noch lange nicht, daß das eine gute Strategie für die eigene Datenbank ist. Es ist schon mal nett, das es geht, aber kein Ersatz für ein gutes Design mit einem oder mehreren kombinierten Indizes - die sind im Normalfall um ein vielfaches schneller...
Quote
wenn eine datenbank zwei indizes benutzen will, müssen sie doch
kombiniert sein, sonst geht das doch nicht, oder?

...Wenn man mal drüber nachdenkt, muß ja irgendwer oder irgendwas irgendwie zwei Indizes kombinieren bzw. miteinander vergleichen.

Ferner liefen... die tollsten Datenbanken können auch mehrere Indizes auf die gleiche Spalte oder auch auf die gleichen Spalten legen. Der Optimierer sucht sich dann den sinnvollsten für die laufende Abfrage aus. Warum das wiederum durchaus sinnvoll sein könnte, verrate ich jetzt mal noch nicht. 8)

Edit: @pq-Zitat aufgeteilt und passend eingeschoben =)\n\n

<!--EDIT|Relais|1144607128-->
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
Relais
 2006-04-09 22:37
#34229 #34229
User since
2003-08-06
2261 Artikel
ModeratorIn
[Homepage] [default_avatar]
Oha, genießt bitte den vorigen Artikel mit Vorsicht. Das hab ich zwar eben voller Überzeugung noch geschrieben, aber meine Sybase-Tage sind lange her (5 Jahre) und die MS-SQL noch ein Jahr länger her... je länger ich über das Thema nachdenke, desto unsicherer werde ich mir da nunmehr. Ich schau es die Tage noch nach.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
pq
 2006-04-10 00:56
#34230 #34230
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
ok, mehrere indizes benutzen macht doch sinn; nach dem
benutzen des ersten index kann man ja den zweiten auch benutzen
und dann eine schnittmenge bilden und dann erst die datensätze
direkt vergleichen.
mich würde aber echt mal interessieren, welche dbms das machen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bloonix
 2006-04-10 11:38
#34231 #34231
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,09.04.2006, 19:37]welche datenbank benutzt denn zwei indizes bei einem select?[/quote]
Oracle! Die Welt besteht halt nicht nur aus MySQL :p

Indizes machen ja erst Sinn, wenn sie auf Spalten liegen, die in
einer where-Bedingungen vorkommen. Wenn in einem State-
ment nun mehrere Bedingungen vorkommen, auf denen Indizes
liegen, dann können auch mehrere Indizes genutzt werden,
was sehr zur "Performance" beitragen kann.

Es gibt unter Oracle sogar einen Optimizer, der anhand von
Histogrammen etc. bestimmt, wann sich ein Indexzugriff lohnt
und wann nicht. Hierfür müssen aber zunächst "Analysen" auf
die Tabellen durchgeführt werden. Für die Erstellung solcher
Histogramme mittels "Analyse" gibt es sehr viele Kriterien...

Es gibt select-Statements, dessen where-Bedingung über ein
paar DIN A4 Seiten laufen, zum Beispiel bei Datawarehouse
Auswertungen. Wenn bei solch einem Zugriff nur ein Index
benutzt werden würde, würde sich die Laufzeit vervielfachen
und die Auswertung wäre nach einer Woche noch immer
nicht fertig :-)

Edit:

Die Möglichkeiten einer Oracle-Datenbank sind gigantisch.
Selbst die Partitionierung von Tabellen ist unter Oracle9i
spielend leicht geworden. Dann gibt es globale und locale
Indizes und selbst bei Tabellengrößen von mehreren 100 GBs
und sogar im Terabyte Bereich sind die Antwortzeiten unter
1er Sekunde.\n\n

<!--EDIT|opi|1144655086-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2006-04-10 12:01
#34232 #34232
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
@pq, wenn du dich für Oracle - Index - Optimizer und Co
interessieren solltest, könntest du mal hier einen Blick
reinwerfen

Performance Tuning

So etwa in der Mitte der Seite wird der Optimizer beschrieben.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
pq
 2006-04-10 13:39
#34233 #34233
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
[quote=opi,10.04.2006, 09:38][quote=pq,09.04.2006, 19:37]welche datenbank benutzt denn zwei indizes bei einem select?[/quote]
Oracle! Die Welt besteht halt nicht nur aus MySQL :p[/quote]
das ist mir klar, dass es auch noch andere datenbanken außer mysql gibt.
Quote
Indizes machen ja erst Sinn, wenn sie auf Spalten liegen, die in
einer where-Bedingungen vorkommen.

das ist mir schon klar.
Quote
Es gibt unter Oracle sogar einen Optimizer, der anhand von
Histogrammen etc. bestimmt, wann sich ein Indexzugriff lohnt
und wann nicht.

den gibt es unter mysql auch (ok, er mag sich manchmal irren).

mich würde immer noch interessieren, welche db(m)s das machen.
mysql nicht, oracle ja. zu den anderen kam bisher nichts sicheres.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
bloonix
 2006-04-10 14:03
#34234 #34234
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=pq,10.04.2006, 11:39]das ist mir klar, dass es auch noch andere datenbanken außer mysql gibt.[/quote]

Das war nicht böse gemeint! Bislang gab es für mich nur Oracle
als DBMS. In naher Zukunft werde ich mich intensiv mit MySQL
beschäftigen und das keinesfalls zu verwöhnt.

[quote=pq,10.04.2006, 11:39]
Quote
Es gibt unter Oracle sogar einen Optimizer, der anhand von
Histogrammen etc. bestimmt, wann sich ein Indexzugriff lohnt
und wann nicht.

den gibt es unter mysql auch (ok, er mag sich manchmal irren).[/quote]

Na, der irrt sich auch oft genug unter Oracle, woraus sich die
meisten Performanceprobleme ergeben, da die Statistiken und
Histogramme nicht immer optimal erstellt werden.

Das es sowas unter MySQL auch gibt, war mir nicht bekannt,
aber es freut mich, dass jetzt zu wissen. Ich bin mal gespannt
was MySQL - salopp - so auf dem Kasten hat. :)

[quote=pq,10.04.2006, 11:39]mich würde immer noch interessieren, welche db(m)s das machen.
mysql nicht, oracle ja. zu den anderen kam bisher nichts sicheres.[/quote]

Das weiß ich leider nicht, da ich wie schon geschrieben, bisher
nur Oracle Kenntnisse besitze.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< |< 1 2 3 4 >| >> 38 Einträge, 4 Seiten



View all threads created 2006-04-06 10:31.