I have uploaded this video for my friends from my first time to New York. If someone wants it in DVD quality, can ask me for the path where I uploaded an ISO image.
Tuesday, January 12. 2010
Cómo optimizar al máximo el uso de índices en las consultas con LIKE, tanto en Oracle como en SQL Server
Este pequeño truco es válido para Oracle y para SQL Server, y aunque no lo he podido probar, seguramente para cualquier otro motor de bases de datos.
La teoría, es que siempre que utilizas un LIKE en una consulta, se hará un Fullscan, no haciendo uso de los índices excepto que sólo se esté usando el comodín a la derecha. Si miramos el plan de ejecución de las siguientes consultas, veremos que la primera hace un uso del índice mientras la segunda no:
La solución para que en ambos casos se utilicen los índices es bien sencilla, y estará en nuestra mano evaluar si se hacen el número suficiente de consultas del segundo tipo como para implementarla.
Los pasos:
- Crearemos un nuevo campo en la tabla "agenda" con el nombre "nombrerev".
- Rellenamos "nombrerev" con los datos en reverse de nombre, haciendo uso de la función REVERSE, disponible tanto Oracle como SQL Server -REVERSE(nombre)-, y creamos un nuevo índice en "nombrerev".
- Creamos triggers para que cuando haya INSERT o UPDATE en "nombre", nos actualice "nombrerev".
- En la aplicación, debemos realizar un pequeño ajuste, que detecte cuando se va a ejecutar una consulta con el comodín al principio: SELECT telefono FROM agenda WHERE nombre LIKE '%Sánchez', para que la cambie a SELECT telefono FROM agenda WHERE nombrerev LIKE REVERSE('%Sánchez')
Espero que os haya sido útil.
La teoría, es que siempre que utilizas un LIKE en una consulta, se hará un Fullscan, no haciendo uso de los índices excepto que sólo se esté usando el comodín a la derecha. Si miramos el plan de ejecución de las siguientes consultas, veremos que la primera hace un uso del índice mientras la segunda no:
SELECT telefono FROM agenda WHERE nombre LIKE 'Javi%'
SELECT telefono FROM agenda WHERE nombre LIKE '%Sánchez'
La solución para que en ambos casos se utilicen los índices es bien sencilla, y estará en nuestra mano evaluar si se hacen el número suficiente de consultas del segundo tipo como para implementarla.
Los pasos:
- Crearemos un nuevo campo en la tabla "agenda" con el nombre "nombrerev".
- Rellenamos "nombrerev" con los datos en reverse de nombre, haciendo uso de la función REVERSE, disponible tanto Oracle como SQL Server -REVERSE(nombre)-, y creamos un nuevo índice en "nombrerev".
- Creamos triggers para que cuando haya INSERT o UPDATE en "nombre", nos actualice "nombrerev".
- En la aplicación, debemos realizar un pequeño ajuste, que detecte cuando se va a ejecutar una consulta con el comodín al principio: SELECT telefono FROM agenda WHERE nombre LIKE '%Sánchez', para que la cambie a SELECT telefono FROM agenda WHERE nombrerev LIKE REVERSE('%Sánchez')
Espero que os haya sido útil.
Friday, January 8. 2010
Cómo conectarse a la consola python de Nokia (pyS60 o PyMaemo) por bluetooth
Es muy simple.
Lo primero es crear un puerto de escucha en nuestro PC. Ya que será nuestro móvil quien "llame" al PC.
- Damos al icono de bluetooth del pc. Luego a crear puerto de escucha y nos creará un COMx (por ejemplo COM6).
- Ejecutamos el HiperTerminal. En Inicio/Ejecutar (ó tecla de windows + R) escribimos hypertrm.
- Si es la primera vez que lo abrimos, saldrán varias ventanas de configuración. Hay que pulsar todo siguiente, siguiente, siguiente... Da igual lo que pongas aquí.
- En la barra de menú, donde dice Llamar, pulsar en Esperar una llamada, seleccionando el puerto COM que acabamos de crear.
- Abrimos la consola de Python en el móvil y en Opciones seleccionamos Bluetooth console. Ahí encontrará el nombre de nuestro PC.
- Lo elegimos y le decimos que va a ser la consola por defecto.
Una vez hecho esto, veremos esto en HyperTerminal:
Connected.
Python 2.5.4 (r254:67916, Aug 3 2009, 04:19:59) [C] on symbian_s60
Type "copyright", "credits" or "license" for more information.
Type "commands" to see the commands available in this simple line editor.
Ya tenemos todo hecho.
Una prueba que puedes hacer es un "hola mundo" hablado, escribiendo:
import audio
audio.say("hola mundo")
A fecha de hoy, no hay compilador para S60v5, aunque sí lo hay para v3. Podéis encontrar mucha información buscando en google: S60v3 py2sis.
Publicado en Foro Maemo.
Lo primero es crear un puerto de escucha en nuestro PC. Ya que será nuestro móvil quien "llame" al PC.
- Damos al icono de bluetooth del pc. Luego a crear puerto de escucha y nos creará un COMx (por ejemplo COM6).
- Ejecutamos el HiperTerminal. En Inicio/Ejecutar (ó tecla de windows + R) escribimos hypertrm.
- Si es la primera vez que lo abrimos, saldrán varias ventanas de configuración. Hay que pulsar todo siguiente, siguiente, siguiente... Da igual lo que pongas aquí.
- En la barra de menú, donde dice Llamar, pulsar en Esperar una llamada, seleccionando el puerto COM que acabamos de crear.
- Abrimos la consola de Python en el móvil y en Opciones seleccionamos Bluetooth console. Ahí encontrará el nombre de nuestro PC.
- Lo elegimos y le decimos que va a ser la consola por defecto.
Una vez hecho esto, veremos esto en HyperTerminal:
Connected.
Python 2.5.4 (r254:67916, Aug 3 2009, 04:19:59) [C] on symbian_s60
Type "copyright", "credits" or "license" for more information.
Type "commands" to see the commands available in this simple line editor.
Ya tenemos todo hecho.
Una prueba que puedes hacer es un "hola mundo" hablado, escribiendo:
import audio
audio.say("hola mundo")
A fecha de hoy, no hay compilador para S60v5, aunque sí lo hay para v3. Podéis encontrar mucha información buscando en google: S60v3 py2sis.
Publicado en Foro Maemo.
(Page 1 of 1, totaling 3 entries)

