我通过4个表查询:时间,标签,用户和类别。 每个表的记录不超过400条,但此查询需要70毫秒。
我需要它多次(400x),所以所有程序总共需要大约30秒。
SELECT COUNT(*) FROM times
INNER JOIN tags ON times.user_id = tags.tag_id
INNER JOIN users ON tags.user_nr = users.nr
INNER JOIN categories ON users.category_id = categories.id
WHERE (times.time_raw < "000560")
AND (times.time_raw != 0 )
AND (times.cell != 1 )
AND (categories.name="kategory_A")
AND (times.run_id="08")
如何让它更快?
答案 0 :(得分:0)
索引是解决方案!!
The following list gives guidelines in choosing columns to index:
•您应该在经常使用的列上创建索引 WHERE条款。
•您应该在使用的列上创建索引 经常加入表格。
•您应该在列上创建索引 在ORDER BY子句中经常使用的 •你应该创造 具有少量相同值或唯一值的列上的索引 在表中。
•您不应在小表(表格)上创建索引 只使用几个块)因为全表扫描可能更快 而不是索引查询 •如果可能,请选择一个主键 以最合适的顺序对行进行排序 •如果只有一列 连接索引在WHERE子句中经常使用,放置 该列首先在CREATE INDEX语句中 •如果不止一个 连接索引中的列经常在WHERE子句中使用, 将最具选择性的列放在CREATE INDEX语句中。