Die Suche funktioniert nicht mit ‘relation’ => ‘ODER’

Datensätze in der database: 5

Das Problem: Dieser Code braucht lange, um 5 Datensätze zu suchen und legt danach ohne Erfolg Ergebnisse auf. Wenn ich die 'relation' => 'OR' zu 'relation' => 'AND' ändere 'relation' => 'OR' funktioniert das, aber das ist nicht das, wonach ich in diesem Szenario suche.

Ist in meinem Code alles in Ordnung?

  'shipping-schedules', 'posts_per_page' => 5, 'post_status' => 'publish', 'paged' => $paged, 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'schedules_port', 'value' => $sfrom, 'compare' => 'LIKE' ), array( 'key' => 'schedules_port', 'value' => $sto, 'compare' => 'LIKE' ), array( 'key' => 'schedules_vessel', 'value' => $svessel, 'compare' => 'LIKE' ), array( 'key' => 'schedules_voyage', 'value' => $svoyage, 'compare' => 'LIKE' ), array( 'key' => 'schedules_arrival', 'value' => $sdate_arrival, 'compare' => '>=', 'type' => 'NUMERIC' ), array( 'key' => 'schedules_departure', 'value' => $sdate_departure, 'compare' => ' 'NUMERIC' ) ) ); ?> 

Solutions Collecting From Web of "Die Suche funktioniert nicht mit ‘relation’ => ‘ODER’"

Es gibt offensichtlich WP_Query mit dem Code, vorausgesetzt, dass Sie diese Argumente durch WP_Query , aber die Abfrage, die Sie WP_Query , wird nicht sehr effizient sein.

Sie haben 6 Metawerte in einer ODER-Beziehung, was an sich nicht besonders effizient ist, da alle diese Zeilen auf Übereinstimmungen überprüft werden müssen und alle Ihre Metawerte auf einem LIKE abgeglichen werden, was eine Art Regex ist. und >= oder < = die erfordern, dass alle Zeilen gelesen werden, damit der Vergleich durchgeführt werden kann.

Ich wäre überrascht, wenn dies mit nur 5 Datensätzen in der Tabelle gescheitert wäre. Es könnte sein, aber ich wäre überrascht, und es wird unter keinen Umständen effizient sein. Ich posts_per_page , dass Sie posts_per_page auf 5 gesetzt posts_per_page . Das ist nicht dasselbe wie die Anzahl der Datensätze in der Tabelle und das wird die Anzahl der $wpdb->post Datensätze widerspiegeln, nicht die Anzahl der $ wpdb-> postmeta`-Datensätze das muss gescannt werden.