SQLite笔记

(1)SQLite语句当中排序和limit条数限制是这样:

SELECT title FROM %s ORDER BY date DESC LIMIT %d COLLATE NOCASE

(2)SQLite搜索时不要忘记对各种转义字符的处理:处理不当,不仅仅是结果出错的问题,更有可能出现查询时崩溃,或者查询不能停止的问题。比如’符号,不处理就导致崩溃,再比如%,如果查询语句当中有很多%,而你又使用了LIKE语句,那么%会被认为是LIKE的匹配符,这时候数据库查询策略也就不得而知了,一般会导致半天出不来结果

/   ->    //
'   ->    ''
[   ->    /[
]   ->    /]
%   ->    /%
&   ->    /&
_   ->    /_
(   ->    /(
)   ->    /)

LIKE语句中不要忘了escape ‘/’,同时要记住
(重要)如果存在多个LIKE用and、or连接的,那么需要写多个escape
如:

select * from table where str like '%baidu.com?wd=/%abc%' escape '/' or str like '%baidu.com?wd=/%abc%' escape '/'

需要指出的是,这种写法也会忽略前面原有的’/’,影响结果的正确性
(3)遇到查询的效率问题,有两个方案可以参考
建立索引:

CREATE INDEX IF NOT EXISTS myIndex ON table(column)
数据分表:比如按时间分表,每个月一张,或者首字母分表等
优先推荐索引,成本低,见效非常明显

(4)sqllite中支持replace或者update、insert语句中有查询语句,但是子语句必须用括号括起来,如

REPLACE INTO favicon_map(icon_id, url, icon_type, last_modified, etag, last_updated, path) VALUES((SELECT icon_id FROM favicon_map WHERE url = 'http://www.baidu.com'), 'http://www.baidu.com', 1, 'abc', 'abc', 1448937950, 'xyz');
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值