sql: ¿Cuál es la mejor manera de actualizar una fila conocida en SQLite?

CorePress2024-01-24  11

Por ejemplo, si quiero actualizar con frecuencia la puntuación de un usuario durante una sesión, ¿Existe una forma más eficaz que ACTUALIZAR puntuación DESDE [nombre de la base de datos] DONDE nombre = [nombre de usuario]

Siento que no debería necesitar buscar continuamente en toda la base de datos cuando ya se ha encontrado la ubicación del valor.

Gracias de antemano

1

No existe la ubicación del valor en SQL.

-forpas

marzo27/2021 a las 14:09



------------------------------------

No buscarías en toda la base de datos si tuvieras un índice por nombre:

create index idx_<table>_name on <table>(name);

donde <tabla> es el nombre de la tabla a la que te refieres, no la base de datos.

Por cierto, si quisiera actualizar la tabla, usaría actualizar, no seleccionar. Pero la actualización aún puede usar el índice.

1

¡Vaya, eres rápido! Muchas gracias, lo probaré. Acabo de regresar para editar eso "Seleccionar" error en mi pregunta, pero llegaste aquí demasiado rápido :)

- Berna OC

27/03/2021 a las 13:35



------------------------------------

Puedes usar propiedades aquí para buscar y actualizar solo la base de datos cuando lo necesites.

private int score;
        public int Score
        {
            get
            {
                score = searchDatabase();
                return score;
            }
            set
            {
                UpdateDatabase(value);
                score = value;
            }
        }
    
    
    Debug.Log(Score);

6

Gracias, pero esto todavía requiere que busquetoda la base de datos cada vez que necesito actualizar la puntuación, ¿verdad?

- Berna OC

27/03/2021 a las 14:06

buscar en una tabla en lugar de en una base de datos. Si lo desea, solo puede actualizar la puntuación si el juego termina y la puntuación máxima es así y no cada vez que la puntuación cambia.

 Arte Zolina III

27/03/2021 a las 14:21

Gracias, sí, había pensado en algo similar.lar. Pero en realidad debo actualizar constantemente la base de datos para realizar una prueba. Supongamos que puedes considerarlo en el contexto de un juego multijugador

- Berna OC

28 de marzo de 2021 a las 1:40

Bueno, puedes crear un delegado para que escuche a otro jugador si hay una actualización de la puntuación y en ese momento obtienes la puntuación y no todos los fotogramas, eso es caro.

 Arte Zolina III

28 de marzo de 2021 a las 1:59

o puedes crear un administrador de juego que actualice la puntuación y luego hacer que tu cliente de jugador delega para suscribirse a ese evento.

 Arte Zolina III

28 de marzo de 2021 a las 2:07



------------------------------------

Lo único que me viene a la mente que se parece a lo que usted menciona como ubicación del valor es el valor de la columna de clave principal de la fila con el valor que busca. Entonces, si la clave principal en la tabla es id y solo tienes el nombre de la persona, puedes consultar una vez para obtener el id de la fila:

SELECT id FROM tablename WHERE name = ?

y luego usar esa identificación en todas las actualizaciones posteriores:

UPDATE tablename SET score = ? WHERE id = ? 

Esta es la forma más rápida de realizar las actualizaciones.

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare