a) Índices existentes
Si se establece una condición de comparación por la columna
de un índice simple o condiciones consecutivas (AND/OR) por columnas
de un índice compuesto en el orden de sus componentes e incluyendo
desde la primera, la sentencia es optimizable. Este acceso ofrece mayor
rapidez siempre que el número de filas obtenidas sea sensiblemente
menor que el de las filas de la tabla. Si este número es similar,
el rendimiento puede llegar a degradarse, siendo entonces preferible un
acceso secuencial. Éste puede provocarse incluyendo una condición
no optimizable (es decir, evitando el uso de índices).
Ejemplo:
where ( albaran > 10 { utilizaría índice
}
or 1 = 0) {
condición false }
Esta condición anularía el acceso por índice sin alterar el significado ni el resultado de la consulta.
b) Número de filas
El número de filas de una tabla es utilizado particularmente en
las consultas con enlaces (JOINS). Este valor se actualiza mediante la
instrucción UPDATE STATISTICS y se almacena en la columna "nrows" de
la tabla "systables".
c) ROW ID
El "row id" es el número de fila en una tabla. Es el acceso
más rápido a la misma, por lo que su uso es prioritario (ver
más adelante).
d) Operación de JOIN
Si las columnas implicadas en el JOIN son componentes de índices,
se utilizará éste tal como se ha explicado más arriba.
Ante la posibilidad de elegir entre varias tablas, el acceso se realizará bajo
las siguientes prioridades:
Si más de una tabla permite este acceso por índice, entonces se tomará como válido el orden que se establezca en la cláusula FROM, debiendo pues indicar primero aquellas de las que presumiblemente se obtendrán menos filas.
Así pues, debe tenerse en cuenta que se mejorará el rendimiento de las consultas si:
Los pasos a realizar para la traducción de aplicaciones T2 son, esquemáticamente, los siguientes:
Desde el entorno "trans" del T2 ejecutar la opción "Crea DBSQL".
En el directorio donde se desea regenerar la nueva BD, ejecutar la opción "Aplicación/Base de Datos" del entorno de traducción "trtrans", con lo que se cargarán los diccionarios de SQL y de programación con los esquemas y datos de la BD T2.
Proceder a la traducción de los programas T2 por cada tipo de lenguaje.
Proceder a la compilación de los nuevos programas CTL generados en el paso anterior.
La lista de ficheros instalados con su copia de MultiBase está disponible en los ficheros "$TRANSDIR/etc/ctlfiles" o "$TRANSDIR/etc/rtfiles", dependiendo de que sea versión de Desarrollo o Run-Time respectivamente.
Cada copia de distribución de MultiBase para sistema operativo UNIX en plataformas PC 386/486 se suministra con un dispositivo de protección que debe ser conectado a un puerto serie del sistema. Para poder ejecutar cualquier programa es preciso haber definido la variable de entorno DBKEY con el nombre del dispositivo asociado, o bien, enlazar uno nuevo de nombre "/dev/ttymbk" a dicho dispositivo.
Ejemplo:
$ DBKEY=/dev/tty02
$ export DBKEY
o
$ ln /dev/tty02 /dev/ttymbk
NOTA: El dispositivo debe estar inhabilitado como terminal (poner status off con sysadm o directamente en el fichero /etc/inittab); asimismo, debe ser accesible (rw) para todos los usuarios.
Conexión interna de la llave en conector de 25 pines:
| Pin | Señal | Entrada/Salida |
| 2 | TXD | S |
| 3 | RXD | E |
| 20 | DTR | S |
| 6 | DSR | E |
| 8 | DCD | E |
| 4 | RTS | S |
| 5 | CTS | E |
Internamente se hallan interconectados:
20 con 6 y 8
4 con 5
| Streams definidos | 40 |
| Etiquetas de error en un bloque (FUNCTION, ON ACTION, etc.) | 20 |
| JOINS por FORM | 8 |
| Tablas contenidas en la sección JOINS | 11 |
| Parejas de columnas enlazadas incluyendo los componentes de COMPOSITES | 30 |
| SCREENS por FORM/FRAME | 20 |
| Páginas de todos los SCREENS por FORM/FRAME | 20 |
| Variables locales más argumentos por función definida | 40 |
| Etiquetas de tablas (label) por FORM | 40 |
| Relaciones Cabecera-Líneas por FORM | 40 |
| LOOKUPS por FORM | 20 |
| Definiciones de MENUS | 40 |
| Ayudas en FORMS/FRAMES | 40 |
| Tablas por FORM | 20 |
| Funciones de usuario definidas | 100 |
| Campos de un bloque de control | 20 |
| Anidamientos de INCLUDES | 5 |
| Anidamientos de la instrucción SWITCH | 100 |
| Anidamientos de instrucciones iterativas | 100 |
| Longitud de un string entrecomillado constante | 256 |
| Longitud de un identificador | 50 |
| Parámetros de una función | 20 |
| Longitud de los argumentos en RUN | 1.024 |
| Longitud del título para PUT EVERY ROW | 250 |
| Longitud editable para un campo | 160 |
| Longitud total de las variables globales | 32.767 |
| Breakpoints | 20 |
| Breakpoints condicionales | 20 |
| Niveles de traza que se muestran en pantalla | 16 |
| Longitud de un índice | 120 |
| Valores duplicados para un índice | 32.768 |
| Tablas bloqueadas simultáneamente con LOCK TABLE | 50 |
| Longitud del nombre de una tabla SQL | 18 |
| Longitud del nombre de una columna SQL | 18 |
| Longitud del nombre usuario | 8 |
| Número máximo de claves referenciales para una tabla | 15 |