0
有沒有辦法加快這件事?以恆定列表值加速查詢
SELECT LOWER(nameid), COUNT(nameid) AS cant
FROM infos AS i
WHERE i.value > 0
AND i.oid IN ($1)
AND i.nameid IN ($2)
GROUP BY nameid
$ 1 是一個長期的逗號分隔列表一樣的ID 1,2,3,4,5,6,7等。
$ 2 就好比是 「ABC」, 「DEF」, 「GHI」 逗號分隔字符串列表等
CREATE TABLE `infos` (
`id` int(11) NOT NULL,
`oid ` int(11) NOT NULL DEFAULT '0',
`nameid` varchar(10) NOT NULL DEFAULT '',
`value ` mediumint(9) UNSIGNED NOT NULL DEFAULT '1'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 CHECKSUM=1;
我想是這樣的,但結果是不一樣的:
SELECT merkmalid, i.wert FROM infos AS i
WHERE i.oid IN
(
SELECT * FROM
(
SELECT ($1)
) AS sub
WHERE i.nameid IN ($2)
)
會創建表,臨時或其他,以包含這些列表的字符串和ID是可能性嗎?或者,這些列表是否正在生成,例如由一些應用程序代碼? –
是否有理由使用'MyISAM'驅動程序而不是'INNODB'? –
是的,這些列表是由一個應用程序生成的,我必須在查詢中使用它們。 – Mike