diff --git a/db/generic.py b/db/generic.py
index fccec82..2bd2fbd 100644
--- a/db/generic.py
+++ b/db/generic.py
@@ -305,15 +305,15 @@ class DatabaseOperations(object):
         )
 
 
-    def create_index_name(self, table_name, column_names):
+    def create_index_name(self, table_name, column_names, unique):
         """
         Generate a unique name for the index
         """
-        index_unique_name = ''
-        if len(column_names) > 1:
-            index_unique_name = '_%x' % abs(hash((table_name, ','.join(column_names))))
-
-        return '%s_%s%s' % (table_name, column_names[0], index_unique_name)
+    
+        index_type_string = ''
+        if unique:
+            index_type_string = '_key'
+        return '%s_%s%s' % (table_name, column_names[0], index_type_string)
 
 
     def create_index_sql(self, table_name, column_names, unique=False, db_tablespace=''):
@@ -330,7 +330,7 @@ class DatabaseOperations(object):
         else:
             tablespace_sql = ''
 
-        index_name = self.create_index_name(table_name, column_names)
+        index_name = self.create_index_name(table_name, column_names, unique)
         qn = connection.ops.quote_name
         return 'CREATE %sINDEX %s ON %s (%s)%s;' % (
             unique and 'UNIQUE ' or '',
@@ -340,23 +340,31 @@ class DatabaseOperations(object):
             tablespace_sql
         )
 
+    def delete_index_sql(self, table_name, column_names, unique):
+        """
+        Generates a create index statement on 'table_name' for a list of 'column_names'
+        """
+        qn = connection.ops.quote_name
+        if not column_names:
+            print "No column names supplied on which to create an index"
+            return ''
+
+        index_name = self.create_index_name(table_name, column_names, unique)
+        qn = connection.ops.quote_name
+        return 'DROP INDEX %s;' % (
+            qn(index_name),
+        )
+
     def create_index(self, table_name, column_names, unique=False, db_tablespace=''):
         """ Executes a create index statement """
+
         sql = self.create_index_sql(table_name, column_names, unique, db_tablespace)
         self.execute(sql)
 
+    def delete_index(self, table_name, column_names, unique=False):
+        """ Executes a drop index statement """
 
-    drop_index_string = 'DROP INDEX %(index_name)s'
-
-    def delete_index(self, table_name, column_names, db_tablespace=''):
-        """
-        Deletes an index created with create_index.
-        This is possible using only columns due to the deterministic
-        index naming function which relies on column names.
-        """
-        name = self.create_index_name(table_name, column_names)
-        qn = connection.ops.quote_name
-        sql = self.drop_index_string % {"index_name": qn(name), "table_name": qn(table_name)}
+        sql = self.delete_index_sql(table_name, column_names, unique)
         self.execute(sql)
 
     drop_index = alias('delete_index')
