Hmm dann die frage, wenn das alles sehr viele sind .. wie kann man das ganze realisieren mit weniger ...
gut das Problem ist es soll eine Volltextsuche werden und somit ist der Platzhalter sehr relevant.
da auch Buchstabenkombinationen in mitten eines Datenbankfeldes gefunden werden soll.
die Indizierung habe ich schon durchgeführt ... jedoch ohne merkbaren erfolg ...
oder eine andere Idee meinerseits:
würde die Verwendung der "Volltextsuche" in mysql das Statement beschleunigen?
meine Idee wäre wie folgt: (jedoch gibts dabei immer den Fehler #1210: Incorrect arguments to MATCH) vielleicht habe ich die Syntax der Funktion nicht ganz verstanden aber irgendwie bekomme ich das so auch nicht ans laufen.
Code:
SELECT * FROM
produkte AS p
INNER JOIN hersteller AS h ON h.id=p.hersteller_id
INNER JOIN produkte_history AS ph ON ph.produkte_id=p.id
INNER JOIN produkte_has_files AS phfs ON phfs.produkte_id=p.id
INNER JOIN files AS fs ON fs.id=phfs.files_id
INNER JOIN kontakte AS k ON k.id=ph.an_id
WHERE MATCH (p.name,h.name,p.typenbezeichnung,ph.rechnungsnummer,p.seriennummer,p.serialnummer,p.sntext,p.dmmd_nummer,p.dmmd_anummer,fs.orignname,fs.freitext,p.freitext) AGAINST ('%hp%')
OR
( k.firma1 like '%hp%'
OR k.spitzname like '%hp%'
AND ph.erstellt_datum =
( SELECT max( ph.erstellt_datum )
FROM produkte_history AS ph
WHERE ph.produkte_id = p.id
AND ph.an_id = k.id
)
)
AND k.id = (
SELECT DISTINCT an_id FROM produkte_history WHERE erstellt_datum = (
SELECT max(erstellt_datum) FROM produkte_history WHERE produkte_id = p.id)
GROUP BY erstellt_datum )
GROUP BY p.id
ORDER BY p.erstellt_datum DESC
LIMIT 0,50