我正在尝试查询具有 blob 列的表,并且需要过滤结果以仅提供在 blob 列中具有内容(任何内容)的行。
然而,这样做SELECT column_name FROM table_name WHERE blob_column IS NOT NULL需要很长时间,我认为这是因为一些斑点相当重。看起来 WHERE 子句正在读取 blob 的全部内容并将它们与null.
有没有办法在不让 sqlite 读取 blob 的全部内容的情况下测试 blob 列是否为空?
从版本 3.7.12开始,使用length()或typeof()函数可以避免读取二进制数据(查询速度更快)。因此,为了避免不必要的开销,必须进行更改
SELECT column_name FROM table_name WHERE blob_column IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
到
SELECT column_name FROM table_name WHERE LENGTH(blob_column) IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
或者
SELECT column_name FROM table_name WHERE TYPEOF(blob_column) != 'null'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5321 次 |
| 最近记录: |