だから私はこれらの3つの行の3つの行とユニークなキーをインデックスすることに対していくつかのテストを行った。結果は自分自身を驚かせた。ユニークvsインデックス付き
CREATE TABLE locations (
locationid INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
country INT(2) NOT NULL,
state INT(2) NOT NULL,
city VARCHAR(64) NOT NULL,
UNIQUE(`country`, `state`, `city`)
);
対
CREATE TABLE locations (
locationid INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
country INT(2) NOT NULL,
state INT(2) NOT NULL,
city VARCHAR(64) NOT NULL,
INDEX(`country`),
INDEX(`state`),
INDEX(`city`)
);
だから私は完了し、いくつかの自動車を実行しようとしましたし、私は3つのインデックスを持つテーブルは、単一の一意のキーで速くテーブルよりも働きました。オートコンプリートSQLはので、私は、MySQLに行って、ちょうどで入力しようとしましたが、平均的に単一の固有キーが約5倍を実行します
<?php
$query = "SELECT state, city
FROM locations
WHERE city LIKE '$city%' and state=$state and country='US';";
$mysqli->query($query);
?>
は、私は上記のコードは少し遅く走っていたことに気づいた...ように見えました遅い...なぜ?
engineintodbと一緒にsmallint unsignedやtinyint unsignedなどのより適切な整数データ型を使用し、複合主キーを宣言してみてください。 –
PHPでクエリのパフォーマンスをテストしても、正確なパフォーマンスの見積もりが得られません。 * SQL_NO_CACHE *でmysqlコマンドライン/ interfaceのクエリを実行してみてください。 –