好的,所以我有一个目前有40000行的表,我需要SELECT
这些。我使用id
和url
列的索引,如果必须SELECT
id
或url
,我会立即使用,但如果我必须SELECT *
它非常慢。我想要做的是搜索我的数据库并输出匹配项,我用
while($arr = mysqli_fetch_array($query))
{ #code... echo $arr['whatever_i_need']."<br>"; }
$query = mysqli_query($link,"SELECT * FROM table");
将来我会在数据库中拥有数亿行,所以我想在1秒内快速返回搜索结果。如果你能给我解决方案我真的很感激!谢谢!
修改
我不想显示所有数据,但我想快速循环以找到所有匹配项
答案 0 :(得分:1)
如果你想要速度,那么你肯定不希望查询从表中返回每个行,然后“循环”查询返回的每一行以识别你感兴趣的那些在返回。这种方法可能会给小表提供可接受的性能,但它肯定不会扩展。
为了提高性能,您希望数据库只找到您想要返回的行,过滤掉您不想要的行,并仅返回子集。
这归结为编写适当的SQL查询;执行适当的SELECT语句。
SELECT t.col1
, t.col2
, t.col3
FROM mytable t
WHERE t.col3 LIKE '%foo%'
AND t.col2 >= '2016-03-15'
AND t.col2 < '2016-06-15'
ORDER BY t.col2 DESC, t.col1 DESC
LIMIT 200
性能是关于确保适当的索引可用以及查询执行是否有效地使用可用索引。