MySQL Forums
Forum List  »  Spanish

Select .. Match .. Again
Posted by: Ricardo Calvo
Date: June 01, 2020 07:41AM

Tengo una tabla de 800.000 registros llamada “padron” con codigo, nombre, domicilio.
Hasta ahora utilizaba la siguiente instrucción para buscar un texto en domicilio:

SELECT nombre FROM Padron WHERE domicilio like '%ejemplo%' order by codigo LIMIT 0,20
la cual por la cantidad de registros demora aprox 4.5 segundos

Al comenzar a hacer pruebas con match .. against encuentro que la velocidad de la búsqueda mejora drásticamente si no uso order by, ejemplo:

SELECT nombre FROM Padron WHERE MATCH(domicilio) AGAINST('ejemplo' IN NATURAL LANGUAGE MODE) LIMIT 0,20
La búsqueda demora 0.25 segundos.

Pero si uso “order by” que por otro lado lo necesito si o si, la búsqueda demora incluso a veces mas que con “like”:

SELECT nombre FROM Padron WHERE MATCH(domicilio) AGAINST('ejemplo' IN NATURAL LANGUAGE MODE) order by codigo LIMIT 0,20
La búsqueda demora mas de 5 segundos.

Como puedo aprovechar la ventaja de la búsqueda por texto match ..against pero con un resultado ordenado por un campo de la tabla? O de que otra manera creen que puedo realizar esta consulta mas eficientemente, digamos con resultados de no mas de 1 segundo?
Muchas gracias desde ya a quien pueda aportarme su opinión para investigar.

Options: ReplyQuote


Subject
Views
Written By
Posted
Select .. Match .. Again
191
June 01, 2020 07:41AM
73
June 01, 2020 12:38PM
77
June 01, 2020 03:10PM
79
June 01, 2020 06:22PM


Sorry, only registered users may post in this forum.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.