Select .. Match .. Again
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.
Subject
Views
Written By
Posted
Select .. Match .. Again
525
June 01, 2020 07:41AM
211
June 01, 2020 12:38PM
239
June 01, 2020 03:10PM
210
June 01, 2020 06:22PM
Sorry, you can't reply to this topic. It has been closed.
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.