我的数据基类如下:
public class DataBaseInstagram extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 7;
private static final String DATABASE_NAME = "Instagram";
private static final String TABLE_PRODUCTS = "DetailImage";
private static final String COLUMN_IMAGE_NAME = "imageName";
private static final String COLUMN_IMAGE_ID = "imageID";
public DataBaseInstagram(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_PRODUCTS_TABLE =
"CREATE TABLE " + TABLE_PRODUCTS + "(" + COLUMN_IMAGE_NAME + " TEXT UNIQUE," + COLUMN_IMAGE_ID + " TEXT UNIQUE" + ")";
db.execSQL(CREATE_PRODUCTS_TABLE);
String INDEX = "CREATE UNIQUE INDEX products_index ON "
+ TABLE_PRODUCTS + " (imageName, imageID)";
db.execSQL(INDEX);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
public List<ExistImage> select() {
String sql = "select * from " + TABLE_PRODUCTS;
SQLiteDatabase db = this.getReadableDatabase();
List<ExistImage> lstExistImages = new ArrayList<>();
Cursor cursor = db.rawQuery(sql, null);
if (cursor.moveToFirst()) {
do {
ExistImage existImage = new ExistImage();
existImage.setImageName(cursor.getString(0));
existImage.setImageID(cursor.getString(1));
lstExistImages.add(existImage);
} while (cursor.moveToNext());
}
cursor.close();
return lstExistImages;
}
}
我在表格中使用INDEX
。我的select
查询会变得更快吗?
答案 0 :(得分:1)
简短回答:索引可能会使加载速度加快,但这不会改变加载缓慢的问题。
您的应用正在将数据加载到数组中,因此我假设您正在使用arrayadapter来填充列表或网格或微调器。
如果查询中有许多项目,使用cursoradapter而不是arrayadapter将使您的应用程序更快。
数组适配器必须加载所有项目。
curosadapter加载当前可见的项目数量。 (按需加载)
我有一个拥有18000个项目的android数据库应用程序,这些项目使用cursoradapter在网格中显示,而且速度非常快..