mysql加速查询表中有500,000行

时间:2014-02-04 22:30:08

标签: mysql sql

我有一个大约有530,000行的数据库,每天增加约5,000 - 10,000行。

目前,我已经运行了这个查询,并且需要大约1.1到1.8秒才能完成,这没关系,但查询正在运行6次,这确实会减慢页面加载速度。

$q = mysqli_query($link, "SELECT `col1`, `col2`, `col3`, `col4`, `col5` FROM `table` WHERE `col6`='".$_SESSION['name']."' AND `col7`=".$i."");

$ i是从1开始的常数增加 - > 6。

没有分区,只是因为我真的不确定该怎么做。

col1 - VARCHAR 255 INDEX   
col2 - VARCHAR 3
col3 - INT 11 INDEX
col4 - INT 11 INDEX
col5 - INT 11  
col6 - VARCHAR 255 INDEX
col7 - INT 1

如果需要更多信息,我可以提供。

如果有人对如何加快查询提出任何建议,那就太棒了。

谢谢。

1 个答案:

答案 0 :(得分:5)

运行一次查询,但在order by

上使用col7
SELECT `col1`, `col2`, `col3`, `col4`, `col5`
FROM `table`
WHERE `col6`='session_name'
ORDER BY `col7`

就个人而言,我只会索引col6,因为它是此查询中用于查找的主过滤器列。所需的任何其他索引将取决于表的其他用途,以及col是您的PK。

col7上的索引几乎是多余的,因为它只有6个可能的值 - 它会在原始问题的$i循环迭代中替换for

假设结果集每个col7值只提供1行,那么5 columns * 6 rows会使数据库的内存排序非常小。

请参阅下面的讨论,了解更多索引选项。