sqlite3求优化sql语句性能

时间:2021-10-05 05:26:25
数据库中存在二个表,
sqlite> .sche application
CREATE TABLE `Application`(
`Id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`Handle` text unique not null,
`Name` text unique NOT NULL,--
`Category` int NOT NULL,-- 
`Subcategory` int NOT NULL,--
`Technology` int NOT NULL ,--
`Risk` int NOT NULL ,
`Protocol` text NOT NULL ,--
`Description` text default '',
`Icon` text default ''
);
 
sqlite> .sche appcode
CREATE TABLE `AppCode`(
`EnumType` int not null, --1 Category; 2 Subcategory; 3 Technology; 4 Risk;
`Type` int not null,
`ParentType` int NOT NULL,
`Name` text
);

其中appcode为application的关联表,
比如,application 的Category如果取字符串形式的值就需要去appcode表EnumType=1及appcode.Type=application.Category的appcode.Name的值。

其他的同理。


总记录约600条
现取某一条件的count(*),sql文如下:
select count(*) from Application A, AppCode C, AppCode S, AppCode T, AppCode R where A.Category = C.Type and C.EnumType = 1 and A.Subcategory = S.Type and S.EnumType = 2 and A.Technology = T.Type and T.EnumType = 3 and A.Risk = R.Type and R.EnumType = 4 ;

时间需要1秒半多,请问如何优化??谢谢。

1 个解决方案

#1


AppCode 表上创建复合索引 (Type,EnumType)

#1


AppCode 表上创建复合索引 (Type,EnumType)