Me pregunto cómo sería el rendimiento de una consulta utilizando la palabra clave LIKE y el comodín como el valor en comparación con tener ninguna cláusula where.SQL LIKE Rendimiento con solo el comodín (%) como valor
Considere una cláusula where como "DONDE un ME GUSTA '%'". Esto coincidirá con todos los valores posibles de la columna 'a'. ¿Cómo se compara esto con no tener la cláusula where en absoluto?
La razón por la que pregunto esto es porque tengo una aplicación donde hay algunos campos en los que el usuario puede especificar valores para buscar. En algunos casos, al usuario le gustaría todos los resultados posibles. Actualmente estoy usando una sola consulta como esta:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Los valores de '%' y '%' se pueden suministrar para que coincida con todos los posibles valores de a y b. Esto es conveniente ya que puedo usar una única consulta con nombre en mi aplicación para esto. Me pregunto cuáles son las consideraciones de rendimiento para esto. ¿El optimizador de consultas reduce LIKE '%' para que coincida con todo? Me doy cuenta de que porque estoy usando una consulta con nombre (declaración preparada), eso también puede afectar la respuesta. Me doy cuenta de que la respuesta probablemente sea específica de la base de datos. Entonces, específicamente, ¿cómo funcionaría esto en Oracle, MS SQL Server y Derby?
El enfoque alternativo a esto sería utilizar 3 consultas separadas basadas en el usuario que ingresa el comodín.
A es consulta comodín:
SELECT * FROM TableName WHERE b LIKE ?
B es consulta comodín:
SELECT * FROM TableName WHERE a LIKE ?
A y B son comodines:
SELECT * FROM TableName
No hay comodines:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Obviamente, tener una sola consulta es el más simple y fácil de mantener. Prefiero usar solo una consulta si el rendimiento aún será bueno.
Solo puedo recomendar probarlo. Pero trataría de atenerme a consultas simples. No compliques demasiado, haz dos separados. EN MI HUMILDE OPINIÓN. – Nate
Recomiendo leer el artículo de Erland sobre condiciones dinámicas de búsqueda. Es bastante largo, pero creo que le dará una idea muy seria y valiosa sobre el tema. http://www.sommarskog.se/dyn-search-2005.html –
"Me pregunto cuál sería el rendimiento de una consulta". Una respuesta fácil a eso es: ejecutar algunas pruebas. –