PDA

View Full Version : سرعت اجرای کوئری در sqlite



hamid_hr
شنبه 20 آذر 1395, 19:13 عصر
سلام
من یک کوئری برا دیتابیس اجرا میکنم
وقتی تعداد رکوردام یکم بالا میره (تقریبا 28000 تا) زمان زیادی طول میکشه که این کوئری اجرا بشه.
وقتی تست کردم متوجه شدم بیشتری زمان مال دستور movetofirst() هست.
آیا راه حلی برای رفع این مشکل هست؟
اینم کدهام



SQLiteDatabase sql = soh.getWritableDatabase();
Cursor cur = sql.rawQuery(Sqlcmd, BindArgs);
if(cur != null){
if(cur.moveToFirst()){
do{
......
}while(cur.moveToNext());
cur.close();

خط 4 بیشترین زمان رو میگیره. بقیه منطقی عمل میکنن.

armankh2015
دوشنبه 22 آذر 1395, 18:49 عصر
سلام
با آرایه دو بعدی پیاده سازی کن شاید بهتر جواب بده چون که پوزیشن دقیق رو توی این حالت میتونید بهش بدین و فکر کنم سریع تر عمل کنه و پیچیدگی زمانی n^2 برای 28000 زیاد نیست.
اینم نمونه کد
for (int j = 0; j <cur.getCount() ; j++)
{
cur.moveToPosition(j);
for (int j2 = 0; j2 <cur.getColumnCount() ; j2++)
{
a[j][j2] = new String();
a[j][j2] = cu.getString(j2);
}
}