![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#6
|
||||
|
||||
Cita:
Aunque es cierto que FB por ser una BD servidora tiene mas funcionalidad, el problema que se expone realmente como lo va a ser mejor? En *CUALQUIER* motor de BD es el mismo y exacto problema. Esto es un caso patologico para cualquier BD relacional: 1- Hay muchos registros 2- Es Texto 3- Lo que se busca esta en cualquier parte del campo 4- No hay indice Por lo tanto, hay un TABLE SCAN forzado. Y es mas, apuesto (aun sin hacer pruebas) que SQLITE es mas rapido que cualquier otro motor *precisamente* porque es una BD local y no una servidor que tiene que hacer todo por protocolos de red remotos. Ademas, el usar un indice aqui dificilmente va a servir de NADA: http://stackoverflow.com/questions/9...ebird-database http://web.utk.edu/~jplyon/sqlite/SQ...ation_FAQ.html FB & Sqlite (Y no veo que BD sea capaz) tienen el mismo problema al hacer busquedas donde el texto a encontrar estan en cuaquier parte, y solo (posiblemente) pueden usar indice si el LIKE es asi: 'Prefijo%', pero falla si es asi: '%Sufjio' o peor '%QuienSabe%'. Asi que hacer un cambio de codigo/bd/tecnologia por esto solo no servira de mucho. Cual es la solucion? Una idea se da en: http://web.utk.edu/~jplyon/sqlite/SQ...ation_FAQ.html
La otra, mas simple es usar Full Text Search (un punto extra por Sqlite: FB no tiene una solucion FTS INTEGRADA): https://www.sqlite.org/fts3.html Con esto, las busquedas se resuelven en milisegundos, con el trade-off de que la BD crecera un poco mas por el uso de FTS. El asunto es que como dice la teoria, uno escoje optimizar TAMAÑO o optimizar TIEMPO y no se puede ambas, asi que aparte de hacer malabares con los querys, usar FTS o encontrar una forma de almacenar el texto emulando una estructura de datos (ej: Cada palabra se guarda en una tabla separada con relacion a la tabla donde esta el texto "grande", o se usa algo similar a un ROPE (https://en.wikipedia.org/wiki/Rope_(data_structure)) u otra cosa) no hay vuelta con esto.
__________________
El malabarista. |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
SQLite + String + Dbcombobox = (MEMO) ERROR | Furyxe | SQL | 7 | 01-02-2012 15:49:28 |
buscar una subcadena en un campo | vroa74 | SQL | 1 | 23-10-2007 20:55:30 |
Campo memo tabla escribirlo en componente Memo | Sayuri | Conexión con bases de datos | 2 | 18-08-2005 13:58:01 |
Búsquedas en campos MEMO | ingacg | Conexión con bases de datos | 1 | 05-12-2003 10:35:23 |
AYUDA Busquedas lentas | st7 | Conexión con bases de datos | 3 | 14-05-2003 04:30:01 |
![]() |
|