Hi!
Warum benötigt OO.o Base 3.2.1 sehr viel Zeit zum Finden eines
Datensatzes (»Record Search«), wenn man ein Suchwort in eine Textbox
einer einfachen Tabelle von 53000 Datensätzen eingibt? (3:38 min)
(HSQLDB) RAM = 1GB. CPU Blowfish Benchmark: 19 s. Verbindet man
("Connecting") dieselben Daten aber von einer .csv-Datei, reduziert sich
die Suchzeit auf 6 s!
Warum ist diese Suche in denselben Daten, aber stammend aus
einer .csv-Datei, um den Faktor 30 schneller?
Ist die einzige OO.o-Lösung, eine andere database engine wie z. B.
SQLite, MySQL, PostgreSQL oder Firebird zu verwenden, um die Suche
wesentlich zu beschleunigen und trotzdem die Daten modifizieren zu
können?
[Maverick, Centrino-Klasse]
Kexi und MS-Access 2003 sind um mindestens eine Größenordnung schneller.
Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Moderator: Moderatoren
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Hi zurück,
die wenigsten Fehler macht mein Computer, die meisten ich selbst!
Wenn bei mir eine Abfrage länger als üblich - also merklich - dauerte, dann fragte ich mich, wie ich die Abfrage verbessern kann. So habe ich schon aus einem Join über mehrere Tabellen eine Abfrage mit Unterabfragen gemacht. Das kann helfen.
Wie kann ich Dir helfen?
die wenigsten Fehler macht mein Computer, die meisten ich selbst!
Wenn bei mir eine Abfrage länger als üblich - also merklich - dauerte, dann fragte ich mich, wie ich die Abfrage verbessern kann. So habe ich schon aus einem Join über mehrere Tabellen eine Abfrage mit Unterabfragen gemacht. Das kann helfen.
Wie kann ich Dir helfen?
LinuxMint 13 maya, LibreOffice 4.1 mit externer HSQLDB 2.3.2
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Aloha
Woran genau das liegt, bzw warum die csv-Tabelle sich so viel schneller durchsuchen lässt, kann ich Dir allerdings nicht erklären. Hängt aber höchstwahrscheinlich mit der Struktur des zugrunde liegenden Tabellenfiles zusammen (data-File der .odb VS schlichter Aufbau der csv-Datei).
Davon abgesehen: die "Filter"-Option sollte Abhilfe schaffen.
Bei entsprechenden Kenntnissen lässt sich das Filter-Menü und möglicherweise auch das Such-Menü sowie deren Funktionen per Makros problemlos nachstellen, so dass man nicht mehr die armseligen GUI-Funktionen benutzen muss.
Schon in einfachen Calc-Dateien ist die Suche per Makro 5-6 mal so schnell wie die Suche über das GUI, bei exakt gleichen Sucheinstellungen.
Die GUI-Suche (Klick auf das Fernglas) ist extrem langsam, das stimmt. Daher sollte man sie auch nicht verwenden.bullgard4 hat geschrieben:Warum benötigt OO.o Base 3.2.1 sehr viel Zeit zum Finden eines
Datensatzes (»Record Search«), wenn man ein Suchwort in eine Textbox
einer einfachen Tabelle von 53000 Datensätzen eingibt? (3:38 min)
Woran genau das liegt, bzw warum die csv-Tabelle sich so viel schneller durchsuchen lässt, kann ich Dir allerdings nicht erklären. Hängt aber höchstwahrscheinlich mit der Struktur des zugrunde liegenden Tabellenfiles zusammen (data-File der .odb VS schlichter Aufbau der csv-Datei).
Zuerst: mit der DB-Engine hat das erstmal wenig zu tun, denn die GUI-Suche setzt keinen SQL-Befehl ab, sondern durchsucht tatsächlich die Tabelle wie einen Text, also von oben nach unten, Zeile für Zeile (Spalte für Spalte, je nach Einstellungen).bullgard4 hat geschrieben:Ist die einzige OO.o-Lösung, eine andere database engine wie z. B.
SQLite, MySQL, PostgreSQL oder Firebird zu verwenden, um die Suche
wesentlich zu beschleunigen und trotzdem die Daten modifizieren zu
können?
Davon abgesehen: die "Filter"-Option sollte Abhilfe schaffen.
Bei entsprechenden Kenntnissen lässt sich das Filter-Menü und möglicherweise auch das Such-Menü sowie deren Funktionen per Makros problemlos nachstellen, so dass man nicht mehr die armseligen GUI-Funktionen benutzen muss.
Schon in einfachen Calc-Dateien ist die Suche per Makro 5-6 mal so schnell wie die Suche über das GUI, bei exakt gleichen Sucheinstellungen.
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Aloha
Die Filterfunktion nachzubauen ist wie erwähnt ein Kinderspiel, ich hab aber mal in ca. 1,5 Stunden eine (zumindest bei größeren Tabellen) deutlich schnellere Alternative zur Suchfunktion zusammengeschustert.
Komfortfunktionen wie das Ignorieren von Groß-/Kleinschreibung, das Suchen in anders-als-vogrgeben-sortierten Tabellen und Suche in mehreren Spalten hab ich in dem Fall außen vor gelassen, aber das ist reine Fleißarbeit, für die ich nach 'nem Fußballabend keine Nerven mehr hab - als Beispiel dafür, wie schlecht die integrierte Suchfunktion ist, sollte es wohl reichen.
(Extension installieren -> Datenbank-Tabelle öffnen -> Menüpunkt "Extras" -> Anpassen -> Tastenkombination für "Table Data View" -> Tastenkürzel aussuchen und das Makro 'FasterBaseSearch -> Module1 -> FasterBaseSearch' zuweisen, danach sollte das Makro in jeder geöffneten Tabellenansicht über dieses Tastaturkürzel funktionieren).
Edit: "Die Dateierweiterung oxt ist nicht erlaubt."
Also als Rapidshare-Link, keine Ahnung, ob das hier zugelassen ist, wenn nicht, dann Link halt löschen.
LInk:
FasterBaseSearch Extension
Die Filterfunktion nachzubauen ist wie erwähnt ein Kinderspiel, ich hab aber mal in ca. 1,5 Stunden eine (zumindest bei größeren Tabellen) deutlich schnellere Alternative zur Suchfunktion zusammengeschustert.
Komfortfunktionen wie das Ignorieren von Groß-/Kleinschreibung, das Suchen in anders-als-vogrgeben-sortierten Tabellen und Suche in mehreren Spalten hab ich in dem Fall außen vor gelassen, aber das ist reine Fleißarbeit, für die ich nach 'nem Fußballabend keine Nerven mehr hab - als Beispiel dafür, wie schlecht die integrierte Suchfunktion ist, sollte es wohl reichen.
(Extension installieren -> Datenbank-Tabelle öffnen -> Menüpunkt "Extras" -> Anpassen -> Tastenkombination für "Table Data View" -> Tastenkürzel aussuchen und das Makro 'FasterBaseSearch -> Module1 -> FasterBaseSearch' zuweisen, danach sollte das Makro in jeder geöffneten Tabellenansicht über dieses Tastaturkürzel funktionieren).
Edit: "Die Dateierweiterung oxt ist nicht erlaubt."
Also als Rapidshare-Link, keine Ahnung, ob das hier zugelassen ist, wenn nicht, dann Link halt löschen.
LInk:
FasterBaseSearch Extension
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Diese Datei konnte ich herunterladen und sehe sie jetzt im Extension Manager.DPunch hat geschrieben: (Extension installieren -> Datenbank-Tabelle öffnen -> Menüpunkt "Extras" -> Anpassen -> Tastenkombination für "Table Data View" -> Tastenkürzel aussuchen und das Makro 'FasterBaseSearch -> Module1 -> FasterBaseSearch' zuweisen, danach sollte das Makro in jeder geöffneten Tabellenansicht über dieses Tastaturkürzel funktionieren).
Ich komme mit der Vorschrift »Tastenkombination für "Table Data View" « nicht klar. Ich finde »Tastenkombination für "Table Data View" « nicht. Ich habe die englische Base-3.2.1-Version. »Anpassen« wird wohl dem Fenster »Customize« entsprechen. Ich finde aber keine Funktion "Tastenkombination für 'Table Data View'" aufgelistet. Bin ich im richtigen Fenster »Customize«? Bin ich im richtigen Reiter »Keyboard«?
Edit: "Die Dateierweiterung oxt ist nicht erlaubt."
LInk: FasterBaseSearch Extension
Gruß
bullgard4
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Aloha
Wenn Du eine Tabelle geöffnet hast, und dann auf "Customize" -> Reiter "Keyboard" gehst, kannst Du rechts oben per RadioButton auswählen, für welches Modul die Einstellungen gespeichert werden sollen.
Zur Auswahl stehen "OpenOffice.org" (Einstellungen werden global für OOo gesetzt) und "Table Data View" (Einstellungen werden für Table Data Views gesetzt).
Ich hab auf die alte Version übrigens irgendwann nochmal Case-Sensitive und Teilstring-Suche draufgezimmert
FasterBaseSearch v1.05 Extension
(Funktioniert im Übrigen in der Form nur bei HSQL-DBs)
Step-by-step für die deutsche OOo 3.2.1-Version, ich denke mal, dass die englische Version nicht davon abweicht:bullgard4 hat geschrieben:Ich komme mit der Vorschrift »Tastenkombination für "Table Data View" « nicht klar. Ich finde »Tastenkombination für "Table Data View" « nicht.
Wenn Du eine Tabelle geöffnet hast, und dann auf "Customize" -> Reiter "Keyboard" gehst, kannst Du rechts oben per RadioButton auswählen, für welches Modul die Einstellungen gespeichert werden sollen.
Zur Auswahl stehen "OpenOffice.org" (Einstellungen werden global für OOo gesetzt) und "Table Data View" (Einstellungen werden für Table Data Views gesetzt).
- Dort letzteres aktivieren, gewünschte Tastenkombination selektieren.
- Bei "Funktionen" unter "Kategorie"-> "OpenOffice.org Makros" aufklappen -> dort "user" aufklappen -> dort "FasterBaseSearch" aufklappen -> "Module1" selektieren
- Unter "Funktion" -> "FasterBaseSearch" selektieren
- Rechts oben auf den Button "Ändern" klicken.
Ich hab auf die alte Version übrigens irgendwann nochmal Case-Sensitive und Teilstring-Suche draufgezimmert
FasterBaseSearch v1.05 Extension
(Funktioniert im Übrigen in der Form nur bei HSQL-DBs)
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Hallo DPunch,
Ich habe das drei Mal an unterschiedlichen Spalten ausprobiert. Bei der Meldung findet die '(' keine ')'-Entsprechung!
Gruß
bullgard4
Das hat geklappt. Aber wenn ich das Makro aufrufe, füttere und starte, dann erhalte ich die Meldung: "BASIC runtime error. An exception occurred. Type: com.sun.star.sdbc.SQL Exception. Message: Sequence not found. FBS_Sequence in statement [Select rownum "FROM (SELECT NEXT VALUE FOR "FBS_Sequence" AS].bullgard4 hat geschrieben:Von da an solltest Du in jeder geöffneten Tabellenansicht das Tastaturkürzel und somit das Makro zur Verfügung haben.
Ich habe das drei Mal an unterschiedlichen Spalten ausprobiert. Bei der Meldung findet die '(' keine ')'-Entsprechung!
Gruß
bullgard4
Re: Base 3.2.1 benötigt sehr viel Zeit zum Finden e. Datensatzes
Aloha
Du könntest mal in der Prozedur "CreateSequence" das "On Error Resume Next" auskommentieren und schauen, was dort für eine Fehlermeldung ausgespuckt wird.
Benutzt Du die eingebettete HSQL-DB? Wie erwähnt funktioniert das Makro nur dort, da die Syntax zum Erzeugen von Sequenzen z.B. bei MySQL eine andere ist und ich mir nicht die Arbeit gemacht habe, das Makro DBMS-unabhängig zu erstellen.bullgard4 hat geschrieben:Das hat geklappt. Aber wenn ich das Makro aufrufe, füttere und starte, dann erhalte ich die Meldung: "BASIC runtime error. An exception occurred. Type: com.sun.star.sdbc.SQL Exception. Message: Sequence not found. FBS_Sequence in statement [Select rownum "FROM (SELECT NEXT VALUE FOR "FBS_Sequence" AS].
Du könntest mal in der Prozedur "CreateSequence" das "On Error Resume Next" auskommentieren und schauen, was dort für eine Fehlermeldung ausgespuckt wird.
Diesen Satz verstehe ich ehrlich gesagt leider nicht.Bei der Meldung findet die '(' keine ')'-Entsprechung!