2013年1月5日土曜日

[Android]SQLiteで実行計画を取得する

SQLServerやOracleでは、実行するクエリーに対してどれくらいのコストがかかるかを評価することができます。で、Androidで利用されるSQLiteでは?とおもって調査してみました。 実は簡単で、実行するクエリーの前に、「explain」ってつけるだけ。
コードはこんなかんじ。
explain select * from TEST_TABLE
で、実行結果はというと、こんな感じ。
addr    opcode    p1    p2    p3    p4    p5    comment
0    Trace    0    0    0        00    null
1    Goto    0    14    0        00    null
2    OpenRead    0    4    0    4    00    null
3    Rewind    0    12    0        00    null
4    Rowid    0    1    0        00    null
5    Column    0    1    2        00    null
6    Column    0    2    3        00    null
7    RealAffinity    3    0    0        00    null
8    Column    0    3    4        00    null
9    RealAffinity    4    0    0        00    null
10    ResultRow    1    4    0        00    null
11    Next    0    4    0        01    null
12    Close    0    0    0        00    null
13    Halt    0    0    0        00    null
14    Transaction    0    0    0        00    null
15    VerifyCookie    0    2    0        00    null
16    TableLock    0    4    0    TEST_TABLE    00    null
17    Goto    0    2    0        00    null
・・・みかたがさっぱりわからない。今度調査してみよう。

2013年1月3日木曜日

[Android]スキーム起動でクエリーを付加する

ブラウザのハイパーリンクで起動するのはいいとして、それに条件を付けたいと考えて、クエリーつかえねーかなぁと思ってやってみました。・・・あっさりできました。以下のようなURLで起動した場合、
xxx://com.foo.bar/appnam?url=http%3A%2F%2Fwww.google.co.jp%2Fig%3Fhl%3Dja

コードはこんなかんじ。意外と簡単。

Uri uri = getIntent().getData();
if (uri != null){
    String url = uri.getQueryParameter("url") + "";
    android.util.Log.d("test""url=" + url);
}