Wie ich bereits in einem früheren Post gesagt habe, muss unsere Rails-App mit einer E-A-V-Tabelle in einer Drittanbieter-Anwendung verbunden sein, von der wir Daten beziehen. Ich hatte eine Ansicht erstellt, um die Daten normal zu machen, aber es dauert viel zu lange, um ausgeführt zu werden. Wir haben einen unserer Offshore-PHP-Entwickler eine gespeicherte Prozedur erstellen lassen, um die Geschwindigkeit zu erhöhen.Gespeicherte Prozeduren in Rails verwenden
Jetzt kommen wir auf das Problem, dass wir diese gespeicherte Prozedur von der Rails App aufrufen müssen, und bieten Suche und Filterung. Die Ansicht könnte dies tun, weil Rails es als ein traditionelles Rails-Modell behandelt hat. Wie könnte ich das mit dem gespeicherten Proc machen? Müssten wir benutzerdefinierte Suche und Bestellung schreiben (wir haben Searchlogic verwendet)? Das Management ist nicht in der Lage, die Nachteile der Verwendung eines gespeicherten Procs von Rails zu verstehen; Alles, was sie sagen, ist, dass die aktuelle Methode zu lange dauert, um die Daten zu laden, und dass sie repariert werden muss, aber das Suchen und Filtern sind kritische Funktionen.
BEARBEITEN Ich habe den Code für diese Abfrage hier: Optimizing a strange MySQL Query. Was komisch ist, ist, dass wenn ich diese Abfrage in einer GUI (Navicat) ausführe es in etwa 5 Sekunden läuft, aber auf der Webseite dauert es über eine Minute zu laufen; Die Ansicht ist kompliziert aus Gründen, die ich im ursprünglichen Beitrag skizziere, aber ich würde denken, dass MySQL Ansichten optimiert und zwischenspeichert wie SQL Server (oder vielmehr, wie ich den SQL Server lese), um die Leistung zu verbessern.
Verwendung der gespeicherten Prozedur mit Rails klingt böse ... Finden Sie nicht einen anderen Weg, die Ladezeit zu verbessern? – marcgg
Stimmen Sie mit marcgg überein ... könnten Sie Informationen bereitstellen, damit wir über andere Möglichkeiten nachdenken können, die Leistung zu verbessern? – Ben
Ich stimme zu, dass diese besondere Situation böse klingt, aber das ist eine gute Frage, da Sie nicht immer die Kontrolle über die Datenbank haben. – jamesaharvey