## ICSQLite ICSQLite is a cloud SQLite database on Internet Computer and provides SDK for developers to use. Our goal is to help developers quickly migrate web2 applications to Internet Computer. ## Usage In your Cargo.toml: ```toml [dependencies] ic-sqlite = "0.1.0" ``` ## Limitations & Suggestions Limited by the total number of cycles of a call, if the number of rows retrieved by a single SQL query exceeds a certain amount, the call will crash. #### SQL statement suggestions * Strictly follow the rules of database optimization * Index building must be an empty table * Where query must be filtered for primary key or index field * Less use NOT,!=,<>,!<,!> NOT EXISTS, NOT IN, NOT LIKE, OR, they will ignore the index and cause a full table scan #### [Performance benchmarks for SQL commands](https://github.com/froghub-io/ic-sqlite/tree/main/examples/bench) | SQL
commands | performance counter
1w single table data | performance counter
10w single table data | performance counter
50w single table data | performance counter
100w single table data | |----------------------------------|------------------------------------------------|-------------------------------------------------|-------------------------------------------------|--------------------------------------------------| | create table | 1194347 | 1433766 | 2565609 | 4066020 | | create index
(empty table) | 884588 | 1122419 | 2241730 | 3601724 | | count | 209847 | 2995943 | 15183853 | 30392494 | | insert | 350256 | 349635 | 351731 | 355381 | | select
(where primary key) | 265363 | 265960 | 265345 | 268112 | | select
(where index field) | 312389 | 314594 | 314666 | 319276 | | select
(where like field) | 178263088 | 1784671532 | limit for single message execution | limit for single message execution | | update
(where primary key) | 385492 | 389192 | 391599 | 394111 | | update
(where index filed) | 239384 | 237908 | 237993 | 240998 | | delete
(where primary key) | 429190 | 259541 | 419615 | 423064 | ## [IC Canister Simple example usage](https://github.com/froghub-io/ic-sqlite/tree/main/examples/backend)