我試圖讓我們的服務器上的響應時間縮短到250毫秒的範圍內的大多數查詢需要比這毫秒一個需要很長的時間在它自己的少..超過1500毫秒由於行數很多。這裏是數據結構,有沒有什麼可以減少這個查詢的時間,但使用不同的查詢或以更快的速度設置我的數據?SQL優化和選擇基於關鍵
mysql> describe variant_bikes;
+------------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-----------------------+------+-----+---------+-------+
| variant_id | mediumint(8) unsigned | NO | PRI | 0 | |
| bike_id | mediumint(8) unsigned | NO | PRI | 0 | |
+------------+-----------------------+------+-----+---------+-------+
mysql> describe cscart_product_option_variants;
+----------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+-----------------------+------+-----+---------+----------------+
| variant_id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
+----------------------+-----------------------+------+-----+---------+----------------+
15 rows in set (0.00 sec)
mysql> describe bikefilter_cache;
+---------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-----------------------+------+-----+---------+----------------+
| bike_id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
| year | smallint(6) unsigned | NO | PRI | NULL | |
| make | varchar(20) | NO | PRI | NULL | |
| line | varchar(20) | NO | PRI | NULL | |
| model | varchar(90) | NO | PRI | NULL | |
+---------+-----------------------+------+-----+---------+----------------+
mysql> select count(*) from variant_bikes;
+----------+
| count(*) |
+----------+
| 7577597 |
+----------+
1 row in set (1.85 sec)
mysql> select variant_id from variant_bikes where bike_id=112;
9366 rows in set (2.30 sec)
有一件事我以前試過,我認爲至少是與它的大小是那麼慢得多,是有variant_bikes與variant_id表作爲不過是bike_ids場爲VARCHAR和/或文字和你用逗號分隔的列表進行搜索。
我想到的另一件事可能是將所有表格安排到不同的更高效的數據結構中。
怎麼樣'EXPLAIN'ing這些查詢? – raina77ow
Erm ...我可能是錯的,但它在我看來只有一個索引 - '(variant_id,bike_id)' - 在'variant_bikes'中;這兩個字段都不是外鍵。真的嗎? ) – raina77ow
我可以,如果它仍然有用拉尼娜。主鍵對索引作爲一個單位不是外鍵。但是每個部分都是。如果這是有道理的。 – Wolfe