【发布时间】:2013-08-28 03:01:09
【问题描述】:
这是我创建表的 SQL:
$sql_create_table = "CREATE TABLE {$table_name} (
hit_id bigint(20) unsigned NOT NULL auto_increment,
user_id int(7) unsigned NOT NULL default '0',
optin_id int(8) unsigned NOT NULL default '0',
hit_date datetime NOT NULL default '0000-00-00 00:00:00',
hit_type varchar(10) NOT NULL default '',
PRIMARY KEY (hit_id),
KEY user_id (user_id)
) $charset_collate; ";
我需要知道计算查询中行数的最快方法。我当前的查询并没有因为经过数百万行而减少它。
$sql = "SELECT hit_id FROM $table_name WHERE user_id = %d AND hit_type = %s AND hit_date >= FROM_UNIXTIME(%d) AND hit_date <= FROM_UNIXTIME(%d)";
我试过这个没有运气(没有返回正确的结果):
$sql = "SELECT COUNT(*) FROM $table_name WHERE user_id = %d AND hit_type = %s AND hit_date >= FROM_UNIXTIME(%d) AND hit_date <= FROM_UNIXTIME(%d)";
我需要做些什么来使这个查询高效,以便它不会对数百万行超时?我只是想统计指定参数集中的行数。
【问题讨论】:
-
表是否有聚集索引?有索引吗?
-
您需要在要搜索范围的列上放置索引。
标签: php mysql sql performance