我有一个大约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
如果需要更多信息,我可以提供。
如果有人有任何建议如何更快地进行查询,那将是很棒的。
谢谢。
一次运行查询一次,但在col7
order by
SELECT `col1`, `col2`, `col3`, `col4`, `col5`
FROM `table`
WHERE `col6`='session_name'
ORDER BY `col7`
就个人而言,我只是索引col6
,因为它是此查询中用于查找的主要过滤列。所需的任何其他索引都取决于表的其他用途,哪个col
是您的PK。
col7
上的索引几乎是多余的,因为它只有6个可能的值 - 它在原始问题中替换了for
环路中的$i
。
假设结果集只能给出1行col7
值1行,则5 columns * 6 rows
为数据库做了非常小的内存排序。
有关更多索引选项,请参见下面的讨论。