Πώς να καθαρίσετε το WordPress Post Meta Table από Empty Values

0
Πώς να καθαρίσετε το WordPress Post Meta Table από Empty Values

Σε ένα από τα προηγούμενα άρθρα γράψαμε ότι ορισμένοι προγραμματιστές WordPress αποθηκεύουν προεπιλεγμένες τιμές που δεν θα έπρεπε να υπάρχουν στη βάση δεδομένων. Δεν έχει νόημα να αποθηκεύουμε το 0 σε μια βάση δεδομένων. Το πρόσθετο WordPress μπορεί να αντλήσει τις πληροφορίες από τη βάση δεδομένων και, αν είναι κενή τιμή, να την αντιμετωπίσει ως 0.

Γιατί οι κενές τιμές είναι πρόβλημα;

Λοιπόν, είναι ένα ακόμη ρεκόρ στον πίνακα που δεν θα έπρεπε να υπάρχει. Ίσως η υπηρεσία βάσης δεδομένων να έχει βελτιστοποιηθεί για κενά πεδία, αλλά για μένα είναι λογικό να μην αποθηκεύονται αυτές οι τιμές. Για παράδειγμα, στα πρόσφατα έργα μας ο πίνακας post meta είχε περίπου 250.000 σειρές. Υπήρχαν περίπου 50.000 κενές σειρές.

Ποια πεδία θεωρούνται άδεια;

Με κενά πεδία υποθέτουμε ότι οι τιμές είναι είτε κενό κείμενο, 0 είτε null. Προς το παρόν δεν θα θεωρήσουμε το κείμενο: ψευδές κενό αλλά είναι πολύ δελεαστικό.

Πριν διαγράψετε ή τροποποιήσετε οτιδήποτε !!Δημιουργία αντιγράφων ασφαλείας!! να το κάνετε πάντα και να χρησιμοποιείτε 2-3 μεθόδους για παν ενδεχόμενο. Δεν φέρουμε ευθύνη για τυχόν απώλεια δεδομένων.

Η ιδέα για την ανάρτηση είναι να βελτιστοποιήσετε τον μετα-πίνακα ανάρτησής σας, ώστε να μπορεί να αναζητηθεί πιο γρήγορα, αλλά μπορεί να υπάρχουν κακογραμμένες προσθήκες που μπορεί να σπάσουν όταν δεν βρίσκουν την τιμή, ακόμη και αν είναι κενή.

Τα ακόλουθα ερωτήματα MySQL/MariaDB SQL θα σας δείξουν πόσες κενές τιμές είναι αποθηκευμένες στον πίνακα post meta.

Πρέπει να εκτελούνται στο αγαπημένο σας εργαλείο διαχείρισης βάσεων δεδομένων. Μπορείτε να χρησιμοποιήσετε το phpMyAdmin ή το Adminer ή οτιδήποτε θέλετε.

Υποθέτοντας ότι το πρόθεμα του πίνακα σας είναι το προεπιλεγμένο: wp_
Εάν χρησιμοποιείτε διαφορετικό, ενημερώστε τα ερωτήματα όπως απαιτείται.

Καταχωρίστε όλες τις σειρές που έχουν στήλη meta_value ως κενές ή μηδενικές τιμές.

SELECT * FROM `wp_postmeta` WHERE meta_value="" OR meta_value IS NULL

Διαγράψτε όλες τις σειρές που έχουν μηδενικές ή κενές τιμές.

DELETE FROM `wp_postmeta` WHERE meta_value="" OR meta_value IS NULL

Καταχωρίστε όλες τις σειρές που έχουν στήλη πεδίου meta_value ως 0.

Χρησιμοποιούμε ένα ξεχωριστό ερώτημα επειδή η βάση δεδομένων μπορεί να μετατρέψει την τιμή κειμένου των στηλών σε 0.

Θέλετε όλες τις στήλες που αποθηκεύουν ακριβώς τον αριθμό 0. Ούτε περισσότερο, ούτε λιγότερο.

SELECT * FROM `wp_postmeta` WHERE meta_value REGEXP '^[0]$';

Διαγράψτε όλες τις σειρές που έχουν στήλη πεδίου meta_value ως 0.

DELETE FROM `wp_postmeta` WHERE meta_value REGEXP '^[0]$';

Αποποίηση ευθύνης: Το περιεχόμενο αυτής της ανάρτησης είναι μόνο για εκπαιδευτικούς σκοπούς. Να θυμάστε πάντα να κάνετε ένα αντίγραφο ασφαλείας πριν κάνετε οποιοδήποτε από τα προτεινόμενα βήματα, απλώς για να είστε ασφαλείς.

Σημείωση παραπομπής: Όταν αγοράζετε μέσω ενός συνδέσμου παραπομπής (εάν υπάρχει) σε αυτήν τη σελίδα, ενδέχεται να κερδίσουμε προμήθεια.

Schreibe einen Kommentar