Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sqlite插入非常慢_C#_Database_Sqlite - Fatal编程技术网

C# Sqlite插入非常慢

C# Sqlite插入非常慢,c#,database,sqlite,C#,Database,Sqlite,我试图理解为什么Sqlite插入在我们的系统中非常慢。所以我写了一个小测试项目。它所做的只是将一行写入一个表中。这个微小的插入需要150毫秒 我知道下面有一笔交易。这仍然使它太长了 我尝试添加PRAGMA synchronous=OFF和PRAGMA locking\u mode=exclusive。没有变化 以下是测试代码: class Program { static SQLiteConnection m_dbConnection; static void Main(str

我试图理解为什么Sqlite插入在我们的系统中非常慢。所以我写了一个小测试项目。它所做的只是将一行写入一个表中。这个微小的插入需要150毫秒

我知道下面有一笔交易。这仍然使它太长了

我尝试添加PRAGMA synchronous=OFF和PRAGMA locking\u mode=exclusive。没有变化

以下是测试代码:

class Program
{
    static SQLiteConnection m_dbConnection;

    static void Main(string[] args)
    {
        initDB();

        writeToDb();

        m_dbConnection.Close();

        Console.ReadKey();
    }

    private static void writeToDb()
    {
        Stopwatch sw = new Stopwatch();

        string sql = "insert into highscores (name, score) values ('Me', 9001)";
        SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);

        sw.Restart();
        command.ExecuteNonQuery();

        Console.WriteLine("Writing to db took {0}ms", sw.ElapsedMilliseconds);
    }

    private static void initDB()
    {
        SQLiteConnection.CreateFile("MyDatabase.sqlite");

        m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
        m_dbConnection.Open();

        string sql = "CREATE TABLE highscores (name VARCHAR(20), score INT)";
        SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
        command.ExecuteNonQuery();
    }

你有没有试过写101001000。。。一行中的行?同意@Fildor,为什么您认为插入一条记录太慢?我希望您不会将收到的值乘以
N
。从1000开始,到25000,这已经非常令人印象深刻(忽略红色文本,红色文本是为了迷惑人)。关键字是transaction(如果您计划进行适当的测试)。这个问题更适合CodeReview。